(writeup) ICTF
Gainme


print_flag
lvlone
lvltwo
lvlthree
lvlfour
main
- chương trình sẽ kiểm tra lần lượt input của mình mỗi lần nhập, nếu đúng sẽ đi tiếp lvl kế, sai thì ngắt chương trình
lvlone

- so sánh chuỗi nhập vào với "ICTF4"
lvltwo

- cũng là 1 dạng so sánh chuỗi nhập vào với dữ liệu trên file
- dữ liệu đó k hiện thị trên ida64 nên sẽ tìm kiếm trong gdb thông qua hàm cmp(compare)


dasDASQWgjtrkodsc
lvlthree

- đây là nhập vào số âm -559038737 để ret về result
lvlfour

- đây kiểm tra biến v2 nếu True(=1) thì lấy flag
- nhìn qua thì đây là pt bậc 3 1 ẩn, ẩn là v2, giải ra thì được đáp số là '1'
print_flag

- hàm này sẽ đọc dữ liệu từ file flag.txt
- script:

ictf{g@inm3-sf23f-4fd2150cd33db}
babyFlow


get_shell
vulnerable_function
main
- ở đây có thể thấy 1 lỗi BOF đến từ vị trí gets(), hướng đi là phương pháp ret2win


- vì là ret2win nên ta cần overwrite được $eip
- offset:


ictf{bf930bcd-6c10-4c05-bdd8-435db4b50cdb}