「Pwn」粗浅分析 House Of Muney

「Pwn」粗浅分析 House Of Muney

💡 原文中文,约9200字,阅读约需22分钟。
📝

内容提要

这篇文章介绍了一种名为"House of Muney"的堆利用技术,可以绕过ASLR实现代码执行。文章详细解释了该技术的利用条件和原理,并提供了相关的代码和演示。该技术需要能够溢出size位并分配大块内存。文章指出在2.40版本的libc上可能会出现问题。

🎯

关键要点

  • 介绍了一种名为'House of Muney'的堆利用技术,可以绕过ASLR实现代码执行。
  • 该技术的利用条件包括:Partial RELRO / No RELRO、能够分配较大的堆、能够改写堆的prev_size和size字段。
  • 在malloc时,如果大小大于mmap_threshold,则会利用mmap系统调用分配内存。
  • mmap_threshold在x86_64上一般为128KB。
  • mmap后,chunk的size第二位IS_MMAPED被设置为1,分配的位置靠近libc的高地址。
  • free操作时,完整性检查只检查chunk是否对齐,而不检查prev_size和size。
  • 通过修改chunk_size,可以覆盖libc的一部分,伪造Elf64_sym结构体以实现代码执行。
  • 需要注意GNU使用哈希操作和bloom filter来快速确定符号的存在。
  • 伪造Elf64_sym结构体时,需要记录相对于libc_base的偏移与变量的值。
  • 在2.40版本的libc上可能会出现问题,导致free操作失败。

延伸问答

什么是House of Muney技术?

House of Muney是一种堆利用技术,可以在没有泄露的情况下绕过ASLR实现代码执行。

House of Muney技术的利用条件是什么?

该技术的利用条件包括Partial RELRO / No RELRO、能够分配较大的堆、以及能够改写堆的prev_size和size字段。

在使用House of Muney时,malloc的mmap_threshold是什么?

在x86_64上,malloc的mmap_threshold一般为128KB。

如何通过House of Muney实现代码执行?

通过修改chunk的size字段,可以覆盖libc的一部分,伪造Elf64_sym结构体以实现代码执行。

在使用House of Muney时,free操作的完整性检查有什么问题?

free操作只检查chunk是否对齐,而不检查prev_size和size,这使得可以munmap任意大小的chunk。

House of Muney在libc 2.40版本上有什么问题?

在libc 2.40版本上可能会出现问题,导致free操作失败。

➡️

继续阅读