Max*_* S. 2 c linux security buffer-overflow
我正在观看有关缓冲区溢出的大学讲座,教授最后说道
即使我们能够使用漏洞利用代码填充缓冲区并跳转到该代码,我们仍然无法执行它.
他提到的原因是:
程序员避免使用导致溢出的函数.
随机堆栈偏移:在程序开始时,在堆栈上分配随机的空间量,使得难以预测插入代码的开始.
使用技术来检测堆栈损坏.
不可执行的代码段:仅允许代码从内存的"文本"部分执行.
现在我想知道,现在缓冲区溢出攻击是否仍然存在?或者它已经过时了.
详细解答将非常感谢!
不是我们所有人.每天都有一群新的程序员.我们的strcpy坏集体知识是否神奇地传播给他们?我不这么认为.
很难,是的.不可能,没有.任何可以变成任意读取的漏洞都可以轻而易举地破坏这种保护.
实际上,我们可以在某些情况下检测堆栈损坏.例如,Canaries可能会被覆盖,它们的值依赖于编译器,并且它们可能无法防止各种堆栈损坏(例如GCC -fstack-protector-strong防止EIP覆盖,但不防止其他类型的溢出)
W ^ X内存是现实,但有多少操作系统已经将它用于堆栈?这对你周末来说是一个有趣的小研究项目.:)此外,如果你研究返回导向编程(ROP)技术(返回libc是它的一个应用程序),你会发现它也可以被绕过.