House of Einherjar

Reading time: 4 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks

基本信息

代码

目标

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

要求

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

攻击

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

参考和其他示例

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks