打印栈金丝雀

Reading time: 4 minutes

tip

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

支持 HackTricks

扩大打印的栈

想象一个情况,其中一个 易受攻击的程序 可以执行一个 puts 函数 指向 栈溢出部分。攻击者知道 金丝雀的第一个字节是一个空字节 (\x00),其余的金丝雀是 随机 字节。然后,攻击者可以创建一个溢出,覆盖栈直到金丝雀的第一个字节

然后,攻击者在有效负载的中间 调用 puts 功能,这将 打印所有金丝雀(除了第一个空字节)。

有了这些信息,攻击者可以 制作并发送一个新攻击,知道金丝雀(在同一程序会话中)。

显然,这种策略是非常 受限 的,因为攻击者需要能够 打印 他的 有效负载内容提取 金丝雀,然后能够创建一个新的有效负载(在 同一程序会话 中)并 发送 真实的缓冲区溢出

CTF 示例:

任意读取

通过 任意读取,例如格式 字符串 提供的,可能会泄漏金丝雀。查看这个例子:https://ir0nstone.gitbook.io/notes/types/stack/canaries,你可以阅读关于滥用格式字符串以读取任意内存地址的内容:

Format Strings

tip

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

支持 HackTricks