Chủ Nhật, 28 tháng 5, 2017

[WhiteHat Summer Contest 2017] fomat_me pwn100

Point: 100--format_me--
Format string is very popular. Can you exploit it this time?
BTW, Mui Ne is a familiar summer vacation destination in Viet Nam.
Netcat: nc formatme.wargame.whitehat.vn 1337
Download file:
http://material.wargame.whitehat.vn/contests/13/fomat_me.zip<md5:2b629d8aa66e63da677a691615363a25>
Backup:
http://bak.material.wargame.whitehat.vn/contests/13/fomat_me.zip<md5:2b629d8aa66e63da677a691615363a25>
nc backup.wargame.whitehat.vn 33333
fomat_me: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=bcdcd688ea5cc831304ff1a8b3f8d456c6669f04, not stripped


format string, stack buffer overflow quá rõ ràng.
Stack overflow thì có vẻ chưa ổn lắm vì dính CANARY.
Ta theo hướng format string, từ buff s tới ebp là 0x2c + 8 = 44 + 8 = 52 bytes.
Với lượng bytes như này thì payload format string sẽ thường đè qua cả stack cookie => call ___stack_chk_fail rồi exit.
Ta sẽ thực hiện ghi đè __stack_chk_fail GOT thành main để khi call ___stack_chk_fail ta sẽ quay về main lại, đồng thời thực hiện leak libc bằng __libc_start_main.

Tiếp theo khi trở lại được main rồi ta tiếp tục thực hiện ghi đè setvbuf => system, stdin => /bin/sh.
___stack_chk_fail sẽ được gọi thêm lần nữa => quay về main thực hiện setvbuf(stdin) lúc này là system("/bin/sh") => shell

Full payload: https://pastebin.com/5xE7fQgt

P/s: format_me chứ không phải fomat_me


Không có nhận xét nào:

Đăng nhận xét