Page cover

😴Racecar

Race condition

Source

file-download
17KB

Analysis

main()

run()

triangle-exclamation

race()

get_flag()

Tổng quan: Chương trình yêu cầu nhập dữ liệu vào(*racers[]) và lưu nó lại. Sau đó tạo 1 thread con và gọi vào hàm random race() sau đó in ra màn hình: Our winner: ...

Exploit

Ở phần này, ta được nhập tối đa 256 bytes.

Sau đó set break point tại pthread_join để hàm race được thực thi.

Sau khi pthread_join thì stack bây giờ sẽ chứa phần payload mà mình vừa nhập vào.

Bây giờ để overflow được phần RIP thì phải ghi đè đến __libc_start_call_main(như ảnh trên).

Last updated