【发布时间】:2014-02-15 18:52:46
【问题描述】:
我正在看一个关于缓冲区溢出的大学讲座,结果教授说
即使我们能够用漏洞代码填充缓冲区并跳转 进入该代码,我们仍然无法执行它..
他提到的原因是:
程序员避免使用会导致溢出的函数。
随机堆栈偏移:在程序开始时,在堆栈上分配随机数量的空间,以便难以预测插入代码的开头。
使用技术检测堆栈损坏。
不可执行的代码段:只允许代码从内存的“文本”段执行。
现在我想知道,现在还存在缓冲区溢出攻击吗?或者它已经过时了。
非常感谢详细的回答!
【问题讨论】:
-
问题会一直存在。
-
1 显然是错误的。他们应该,但不是所有应该。 2、3 和 4 取决于操作系统和架构。
-
利用起来比较困难,但是问题是存在的。只是因为它是一个老问题,它不会随着时间的推移神奇地消失。
-
(3) 在大多数实现中非常不可靠。 (4) 是不完整的:这个想法是内存部分要么是可执行的,要么是可写的,但绝不是两者兼而有之。
-
不可执行的堆栈并不能拯救你。请参阅返回到 libc/ROP 样式的技术。随机库地址有助于缓解这种情况,但通常有足够多的人在触发堆栈或基于堆的缓冲区溢出之前找到使用不同漏洞预测这些地址的方法
标签: c linux security buffer-overflow