doublefree

Kylinxin Kylinxin

利用条件

1.fastbin 的堆块被释放后 next_chunk 的 pre_inuse 位不会被清空
2.fastbin 在执行 free 的时候仅验证了 main_arena 直接指向的块,即链表指针头部的块。对于链表后面的块,并没有进行验证。

该漏洞是指将同一个chunk free两次,通常情况下free两个chunk会报错是无法编译的,监测机制也很简单,就仅仅是对free变量与前一个进行对比,所以可以中间夹一个其他的实现:

1
2
3
free(shangu1)
free(shangu2)
free(shangu1)

此时的 bins 中情况大概如下:0x20 —> shangu1 —> shangu2 —> shangu1
当再次申请堆时会出现 有两个指针指向同一个chunk

![联想截图_20230322221849.png](https://s2.loli.net/2023/09/12/BI6lRtbdPnKTuMN.png

  • 标题: doublefree
  • 作者: Kylinxin
  • 创建于 : 2023-06-04 15:14:29
  • 更新于 : 2023-06-04 15:14:29
  • 链接: https://kylinxin.github.io/2023/06/04/double free/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
doublefree