经过一些研究,我还没有找到任何描述方法的论文来做到这一点(甚至没有一个不可靠的方法)。似乎SSP (StackSmashing保护)/Propolice
发布于 2010-01-19 16:32:03
对于防止某些缓冲区溢出,Canary是一种非常好的安全措施。多年来,各种金丝雀实现已经被打破,然后变得更加安全。重要的是,即使先进的内存保护,缓冲区溢出仍然被利用在Vista,Windows7和Fedora 11...
值得一提的是,Canary只保护函数的调用框架(包括强大的EIP!)。缓冲区溢出可能发生在另一个内存段中,例如堆,而金丝雀不会有任何影响。此外,应用程序可以使用缓冲区溢出进行黑客攻击,而不必覆盖EIP。控制EIP是一种非常简单直接的方法,可以将缓冲区溢出转变为致命的漏洞利用,这就是为什么它是最常见的利用漏洞的方法。
这些开发方法以及其他方法在Exploiting Software: How to break code中都有详细介绍。
发布于 2009-05-13 02:34:52
我更熟悉微软的GS堆栈保护,但这两种方法都是seem similar。
以下来自Microsoft的博客文章显示了一个示例,在该示例中,即使正在使用堆栈cookie,攻击者仍然可以控制(第一个示例应适用于非Windows系统):
这篇博客文章谈到了即将对堆栈保护进行的一些改进:
发布于 2009-07-31 19:52:01
如果应用程序在堆栈上有一个数组/缓冲区,并且使用调用方控制的索引值而不进行边界检查,那么调用方将能够访问任意内存位置,并且堆栈保护将无法阻止或检测到这种情况。
https://stackoverflow.com/questions/855394
复制相似问题