House Of Einherjar
House of Einherjar 是一种经典的堆利用技术,核心思想是利用 free 时的向后合并机制。通过伪造 prev_size 并清除 PREV_INUSE 标志位,欺骗 glibc 将当前释放的 chunk 与一个任意位置的伪造 chunk 合并,从而使得下一次 malloc 能够分配到目标地址,实现任意地址写。
House of Einherjar 的利用条件:
- 漏洞要求:存在单字节溢出(通常是 Off-By-Null)或常规的堆溢出漏洞。利用该漏洞能够覆盖相邻下一个 chunk 的 prev_size 字段,并且能将下一个 chunk 的 size 字段的最低字节覆盖为 \x00,从而清除其 PREV_INUSE(P位)标志。
- 伪造 Chunk 地址:由于需要计算偏移量(prev_size),需要知道伪造 Chunk 所在的内存地址 heap_base
- 目标 Chunk 地址:需要知道即将被释放的 chunk 的地址,实际上就是 heap_base + 偏移
howheap_House of Einherjar.c
1 |
|
更新: 2026-04-27 09:30:58
原文: https://www.yuque.com/idcm/wnemg9/gwlx1517sud1tai6