为什么可以执行堆栈或堆段中的代码?

时间:2016-12-12 11:14:42

标签: c security buffer-overflow

在安全领域,存在堆利用和堆栈粉碎攻击。

但我发现/proc/*/maps文件,堆和堆栈段, 只有rw-p - 权限。

这两个部分没有执行权限。 我的工程师朋友告诉我,如果您在英特尔CPU中获得rw权限,您的代码将自动获得执行权限。 但我不明白为什么英特尔会做这个设计?

1 个答案:

答案 0 :(得分:2)

这是因为Linux中的所有段(Windows也都具有相同的基址和相同的大小)。代码始终通过代码段访问,代码段覆盖与堆栈(或任何其他)段完全相同的区域,因此您可以在任何地方执行代码。

修改

你可以在这里阅读更多内容:http://www.intel.com/Assets/en_US/PDF/manual/253668.pdf 第3.2章使用部分