[Viettel MATESCTF 5th Quals] – Get Admin Role (Web 200)

Lần đầu múc được bài web của Viettel MATESCTF 😀

Đề cho chúng ta một link: http://weblab02.matesctf.org/web200_c1c6afb055ad6ba7b9dbd3cf39e99633/login.php và không giải thích gì thêm.

Như một thói quen, noob web như mình thì chỉ biết Ctrl-U view source thôi. View source thì thấy có username/password cho login. Login bằng username/password đề cho, mình được chuyển sang một trang mới, http://weblab02.matesctf.org/web200_c1c6afb055ad6ba7b9dbd3cf39e99633/user.php với một nội dung rất chi là ba chấm, dĩ nhiên là không có flag =)) đương nhiên rồi, 200 điểm mà =))

Screenshot 2016-05-28 at 21.11.52

Sau khi nhận ra là mình không thể làm ăn gì với cái giao diện web này nữa, mình chuyển qua check cookie và phát hiện ra một cookie base64 encoded.

Screenshot 2016-05-28 at 21.14.21

Đem cookie đi base64 decode, mình nhận được một cái chuỗi rất là đẹp, “name=matesctf&role=user&sign=3b88e265e072d231ec37b67e92bea158“.

Đến đây, cộng với title của bài là Get Admin Role thì có lẽ ai cũng nhận ra là giờ biến cái role trong cookie thành “admin” thì có flag, surevkl, but how can?

Đại loại nó như này: cái sign là md5 hash của cái name và cái role (cộng với một cái salt có độ dài 12 ở đầu như hint), sửa cái role thì cái sign cũng thay đổi. Bằng kinh cmn nghiệm của một thằng chơi crypto nhiều… tháng,  mình dám cá bài này solve được bằng hash length extension attack, và có luôn một tool là hash_extender để làm việc này. Mình sẽ append thêm một cái param “role=admin” vô trong cái chuỗi cookie mới, sau đó dùng hash_extender để tính lại md5 cho thỏa mãn cái sign.

Screenshot 2016-05-28 at 21.47.32

Phần việc còn lại khá là đơn giản, decode hex đoạn new string ra, thêm “&sign=<new-signature>“, sau đó base64 encode lại và sửa cookie lại thành đoạn này thôi.

Trick chỗ này là nên dùng curl để request lên, vì khi đổi role thành admin thành công thì web sẽ 302 redirect chúng ta ra trang logout.

Và đây là kết quả:

Screenshot 2016-05-28 at 21.44.15

Thực sự là mất quá nhiều thời gian nên không fun như flag cho lắm 😥