Print Stack Canary

支持 HackTricks

放大打印的栈

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

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

有了这些信息,攻击者可以构造并发送一个新的攻击,知道了canary(在同一个程序会话中)。

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

CTF 示例:

任意读取

通过类似格式字符串提供的任意读取,可能可以泄露 canary。查看这个例子:https://ir0nstone.gitbook.io/notes/types/stack/canaries ,您可以阅读关于滥用格式字符串以读取任意内存地址的内容。

支持 HackTricks

Last updated