hacktricks/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/print-stack-canary.md

4.4 KiB
Raw Permalink Blame History

打印栈保护 Canaries

{% hint style="success" %} 学习并练习 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习并练习 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks
{% endhint %}

放大打印的栈

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

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

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

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

CTF 示例:

任意读取

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

{% hint style="success" %} 学习并练习 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习并练习 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks
{% endhint %}