在ubuntu上堆栈执行保护和随机化

use*_*103 5 c stack-overflow security buffer-overflow

作为课程作业的一部分,我需要编写一个漏洞利用代码来导致缓冲区溢出并执行堆栈中存在的代码.

我已通过以下命令关闭堆栈随机化:sysctl -w kernel.randomize_va_space = 0但是,我无法找到关闭堆栈执行保护的方法.我不确定在ubuntu中是否有一些堆栈exec保护...所以我的第一个问题是在ubuntu 8.10中是否有像red hat的exec-shield这样的东西,如果有,我们怎么能把它关掉.

我一直试图导致缓冲区溢出并从堆栈执行指令,但每当我尝试这样做时,它会给我一个seg错误.

我有ubuntu 8.10 64位,但是程序即时调试是在关闭堆栈保护的i386机器上编译的.

小智 5

您可能希望使用-z execstackGCC编译中的标志进行编译,以及-fno-stack-protector(禁用GCC的SSP/Propolice堆栈保护),即:

gcc -fno-stack-protector -z execstack -o vuln vuln.c
Run Code Online (Sandbox Code Playgroud)

在此之后,一切都应该变成杰克.注意,这sysctl -w kernel.randomize_va_space=0只是地址空间随机化,而不是堆栈保护本身; 这可能是强行使用各种技术.