House_of_Spirit(Fastbin Attack)
House of Spirit
House_of_spirit 技术的核心在于能够覆盖一个堆指针变量(也就是调用 malloc 之后堆块中 malloc_data 返回地地址),让其指向可以控制的区域。
**利用思路:**1)伪造堆块;2)覆盖堆指针指向上一步伪造的堆块 3)释放堆块,将伪造的堆块放入 fastbin 的单链表里 4)申请堆块,将刚才释放的堆块申请出来,最终可以使得向目标区域中写入数据,以达到控制内存的目的。
不过当我们想要构造 fastbin_fake_chunk 并将其释放时,可以将其放入到对应的 fastbin 链表中,需要绕过一些必要的检测:
- 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 到指定地址,其实并不需要修改指定地址的任何内容,关键是要能够修改指定地址的前后的内容使其可以绕过对应的检测。。
更新: 2026-03-31 11:08:20
原文: https://www.yuque.com/idcm/wnemg9/kddcnz4pksgnb6uo