[关闭]
@iPhan 2018-07-15T13:39:52.000000Z 字数 14758 阅读 1742

软件工程大作业一:how2heap

pwn


成员列表:


0X01. ptmalloc和jemalloc内存分配原理

0X02. how2heap

0X02-1. first_fit

综述

这里没有任何攻击,说的是glibc分配内存的方式是最先适应算法,空闲块按地址递增的顺序排列,只要求分配空间大小小于该空闲空间大小,就可以分配。实例中给了分配两个chunk,大小分别为512和256,大于fastbin,然后写入数据并释放第一个512chunk,释放的chunk在unsorted bin之中,之后再分配500字节。此时由于glibc机制,直接在unsorted bin中找到并将其分割,一部分给用户,另一部分保留,所以第三个chunk指针与之前第一个chunk的相同。

细节

0X02-2. Fastbin_dup

综述

这里的攻击是对同一段内存实施双重释放,让它在空闲队列中出现两次。两次free同一个内存地址时,第一次free后,指针只没变,但是指针所指内存已经被释放,改程序无法拥有这块内存的控制权,所以变成野指针,第二次free时,由于这一块内存已经分配给了其他运行的程序,所以第二次释放可能会破坏了其他使用这个内存的数据导致内存崩溃。但是当第一次分配的内存块释放后没有程序运行时,就不会因为free导致程序崩溃。

细节

0X02-3. fastbin_dup_into_stack

综述

3是在2的基础上扩展,进行栈上的自由跳转,利用双重释放的漏洞,将下一次的空闲地址块写入第一块中,后面加上0x20,这样就可以促使malloc返回一个几乎任意的指针。

细节

0X02-4. fast_bin_dup_consolidate

细节

  1. Now p1 is in unsorted bin and fast bin. So we'will get it twice: 0x602010 0x602010

0X02-5. The house of spirit

细节

细节

0x02-7. poison_null_byte

0x02-8. house_of_lore

描述

0x02-9. overlapping_chunks

描述

中心思路就是通过篡改free掉的块的size字段(改的大一些),来欺骗堆管理机制,然后在再次malloc出来这个块时,它会是一个覆盖了下一个块的“overlapping_chunk”,更改这个块中的下一个块那部分时,因为共用同一片内存所以两个块都会受影响。

0x02-10. overlapping_chunks_2

描述

0x02-11. house_of_force

细节

0x02-12. unsorted_bin_attack

细节

0x02-13. unsorted_bin_into_stack

细节

0x02-14. house_of_einherjar

0x02-15. house_of_orange

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注