查看保护
查看ida
大致就是alloc创建堆块,free释放堆块,以及fill填充堆块
解释get input函数:
这里解释一下get input函数
这个函数是人工编写的,其中*v4==10那里是把接受到的换行符变为\x00,并且结束输入。
v3++那里,v3是统计输入的个数,并且在v3大于或等于我们申请的堆块大小+1时停止输入。
但还是有一个要注意的点,我在创建堆块的函数那里填充堆块没有办法填充多一个字节,不知道是我的操作问题还是程序就是这样。
完整exp:
from pwn import*
from LibcSearcher import*
context(log_level='debug')
p=process('./heap')
p=remote('node5.buuoj.cn',26755)
key=0x202040
no