我有一台Core i7 720QM处理器,并且正在运行Slackware 13.37(32位)作为虚拟机。作为课程作业,我必须编写一个易受攻击的程序并粉碎堆栈。但是,在大多数计算机上,这不起作用,因为存在某种堆栈执行保护(NX位?),当CPU检测到在堆栈上执行数据时,会产生“分段错误”。
有没有办法通过sysctl
或类似的东西向内核发出信号忽略这个?
答案 0 :(得分:2)
$ sudo apt-get install execstac
应该安装execstack,这是一个修改ELF头的程序,用于在目标二进制文件中启用/禁用堆栈上的NX保护。
$ execstack -s vuln
应该使堆栈可执行示例程序。
答案 1 :(得分:1)
像这样编译你的程序
gcc -fno-stack-protector -z execstack <sourcefile> -o <outputfile>