hacktricks/binary-exploitation/libc-heap/house-of-einherjar.md

4.8 KiB
Raw Permalink Blame History

Einherjar之屋

{% hint style="success" %} 学习并练习AWS黑客HackTricks培训AWS红队专家ARTE
学习并练习GCP黑客HackTricks培训GCP红队专家GRTE

支持HackTricks
{% endhint %}

基本信息

代码

目标

  • 目标是在几乎任意特定地址上分配内存。

要求

  • 当我们想要分配一个块时,创建一个伪造的块:
  • 设置指针指向自身以绕过完整性检查
  • 通过一个块到下一个块的一个字节溢出,使用空字节修改PREV_INUSE标志。
  • 在被滥用的块的prev_size中指示自身与伪造块之间的差异
  • 伪造块的大小也必须设置为相同大小以绕过完整性检查
  • 为构造这些块,您将需要一个堆泄漏。

攻击

  • 攻击者在一个受攻击者控制的块内创建一个伪造块,用fdbk指向原始块以绕过保护
  • 分配2个其他块BC
  • B中滥用prev in use,清除prev_size数据,并用C块分配的位置与之前生成的伪造A块之间的差异进行覆盖
  • 这个prev_size和伪造块A中的大小必须相同以绕过检查。
  • 然后填充tcache
  • 然后,释放C,使其与伪造块A合并
  • 然后,创建一个新块D,它将从伪造A块开始,覆盖B
  • Einherjar之屋到此结束
  • 这可以继续进行快速bin攻击或Tcache污染
  • 释放B以将其添加到快速bin / Tcache
  • 覆盖Bfd,使其指向目标地址,滥用包含BD块(因为它包含B
  • 然后进行2次malloc第二次将分配目标地址

参考和其他示例

{% hint style="success" %} 学习并练习AWS黑客HackTricks培训AWS红队专家ARTE
学习并练习GCP黑客HackTricks培训GCP红队专家GRTE

支持HackTricks
{% endhint %}