DICECTF AND WHO KNOWS

Hế lô mn, dạo này mình lười quá không muốn ghi blog xíu nào :v Dạo này mình cũng hơi đần nữa, sú vãi

WEB1:web/dicedicegoose


Bài này mình không đi sâu vào, chủ yếu là đọc codejs thôi :v Muốn win thì player và goose sẽ có Ox và Oy trùng nhau

 Và score phải bằng 9 nữa 

Player cứ trừ Oy và goose trừ Ox là được
Challenge ở client side, mình điều dễ dàng điều khiển được mấy cái tọa độ đấy. Cứ history.push([<tọa_do_player,toa_do_goose>]) trên console thế là đc :v Lười làm lại mấy bài ko code quá ;v

Web2:funnylogin

Okay lần này thì bài này mình có source :v Tự build local cho dễ làm :v
Xem sơ qua cấu trúc thư mục nhé :V

Lướt qua một chút, tại endpoint /api/login, flag chỉ đưa cho chúng ta nếu, tồn tại user[id] và isAdmin[user] phải trả về True. Dễ dàng có thể nhận ra nó user và pass ko sanitize nên có thể trigger được sqli :c

Hmm, user tận 100,000 người lận, challenge ko yêu cầu brute nên mình sẽ phải tìm cách khác


Chú ý vào đây, isAdmin là 1 object -> giá trị user chúng ta có thể điều khiển được -> Chà, nghe có mùi prototype pollution ở đâu đây nhỉ <(")
:3 Bây giờ việc chúng ta chỉ cần là inject một user với tên là __proto__ và pass sẽ trả về bất kì user nào cũng được. 
user:__proto__
pass: ' or id ='1
câu query sẽ là 
SELECT id FROM users WHERE username ='__proto__' AND password = '' or id ='1';

Và nhận flag thôi, btw co the dung toString, constructor cung duoc
Mai ghi tiếp, huhu :< 







Nhận xét

Bài đăng phổ biến từ blog này

KMACTF và nỗi buồn éo làm được gì cả T__T