doublefree
First Post:
Last Update:
Word Count:
Read Time:
Page View: loading...
Last Update:
Word Count:
194
Read Time:
1 min
Page View: loading...
利用条件
1.fastbin 的堆块被释放后 next_chunk 的 pre_inuse 位不会被清空
2.fastbin 在执行 free 的时候仅验证了 main_arena 直接指向的块,即链表指针头部的块。对于链表后面的块,并没有进行验证。
该漏洞是指将同一个chunk free两次,通常情况下free两个chunk会报错是无法编译的,监测机制也很简单,就仅仅是对free变量与前一个进行对比,所以可以中间夹一个其他的实现:
1 |
|
此时的 bins 中情况大概如下:0x20 —> shangu1 —> shangu2 —> shangu1
当再次申请堆时会出现 有两个指针指向同一个chunk
![联想截图_20230322221849.png](https://s2.loli.net/2023/09/12/BI6lRtbdPnKTuMN.png