House of Spirit

Kylinxin Kylinxin

该技术的核心在于在目标位置处伪造 fastbin chunk,并将其释放,从而达到分配指定地址的 chunk 的目的。

要想构造 fastbin fake chunk,并且将其释放时,可以将其放入到对应的 fastbin 链表中,需要绕过一些必要的检测,即

1
2
3
4
5
fake chunk 的 ISMMAP 位不能为 1,因为 free 时,如果是 mmap 的 chunk,会单独处理。
fake chunk 地址需要对齐, MALLOC_ALIGN_MASK
fake chunk 的 size 大小需要满足对应的 fastbin 的需求,同时也得对齐。
fake chunk 的 next chunk 的大小不能小于 2 * SIZE_SZ,同时也不能大于av->system_mem 。
fake chunk 对应的 fastbin 链表头部不能是该 fake chunk,即不能构成 double free 的情况。

想要使用该技术分配 chunk 到指定地址,其实并不需要修改指定地址的任何内容,关键是要能够修改指定地址的前后的内容使其可以绕过对应的检测。

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