打印栈金丝雀

Reading time: 4 minutes

tip

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

支持 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) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks