[Cyber Apocalypse 2021]- Web MiniSTRyplace writeup
1. Đề bài
Đề bài cho một trang web như vầy
Web MiniSTRyplace
Và source code như vầy
Source code MiniSTRyplace
2. Giải quyết
Nhìn vào hình source code bên trên, điều đầu tiên đập vào mắt là dòng code số 17.
include('pages/' . (isset($_GET['lang']) ? str_replace('../', '', $_GET['lang']) : $lang[array_rand($lang)]));
Đúng vậy, đoán ngay ra luôn là dạng LFI rồi.
Có 1 điểm cần lưu ý ở đây, là giá trị của $_GET[‘lang’] sẽ bị replace chuỗi ‘../’. Vậy chúng ta cần bypass nó để có thể LFI.
Thử dưới local cái cho có proof nha :D
Đã bị filter
Đó, các bạn thấy, nó đã loại bỏ đi ../
Thực ra bypass cái này đơn giản thôi, nó replace ../ đúng không? vậy thì mình thử …/./ xem sao nha
Bypassed
Đó, bài này đơn giản chỉ thế thôi. Đến đây thì thử và lấy flag thôi.
Ban đầu khi nhìn vào folder của source code như vầy:
Folder source code
Tôi đã thử với payload “…/./flag”, nhưng nhận về một trang trống không.
Không có flag ở đây
Nên tôi thử payload “…/./…/./flag”, và đã lấy được flag
Flag
Flag là: CHTB{b4d_4li3n_pr0gr4m1ng}