一道常规的pwn题,查看程序保护。
保护全开。分析程序发现bannar函数有格式化字符串漏洞,可以用来泄露代码段基址以及Libcdi地址,edit函数有一字节溢出,可以修改next chunk的size,且chunk指针存储在bss段上想到unlink。由于开了Full Relro所以直接劫持malloc_hook,unlink的时候注意绕过以下check。
if (__builtin_expect (chunksize(P) != prev_size (next_chunk(P)), 0)) \
malloc_printerr ("corrupted size vs. prev_size"); \
// fd bk
if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) \
malloc_printerr (check_action, "corrupted double-linked list", P, AV); \
// next_size related
if (__builtin_expect (P->fd_nextsize->bk_nextsize != P, 0) \
|| __builtin_expect (P->bk_next