如何让Linux在堆栈上执行数据?

时间:2011-07-28 23:48:53

标签: buffer-overflow penetration-testing stack-smash

我有一台Core i7 720QM处理器,并且正在运行Slackware 13.37(32位)作为虚拟机。作为课程作业,我必须编写一个易受攻击的程序并粉碎堆栈。但是,在大多数计算机上,这不起作用,因为存在某种堆栈执行保护(NX位?),当CPU检测到在堆栈上执行数据时,会产生“分段错误”。

有没有办法通过sysctl或类似的东西向内核发出信号忽略这个?

2 个答案:

答案 0 :(得分:2)

$ sudo apt-get install execstac

应该安装execstack,这是一个修改ELF头的程序,用于在目标二进制文件中启用/禁用堆栈上的NX保护。

$ execstack -s vuln

应该使堆栈可执行示例程序。

答案 1 :(得分:1)

像这样编译你的程序

gcc -fno-stack-protector -z execstack <sourcefile> -o <outputfile>