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

Buffer overflow 如何让Linux在堆栈上执行数据?,buffer-overflow,penetration-testing,stack-smash,Buffer Overflow,Penetration Testing,Stack Smash,我有一个核心i7 720QM处理器,我正在以虚拟机的形式运行Slackware 13.37(32位)。作为一个类分配,我必须编写一个易受攻击的程序并破坏堆栈。但是,在大多数计算机上,这不起作用,因为存在某种堆栈执行预防(NX位?),当CPU检测到试图在堆栈上执行数据时,这会生成“分段错误” 有没有一种方法可以通过sysctl或类似的方式向内核发送信号来忽略这一点 $ sudo apt-get install execstac 应安装一个程序,该程序修改ELF头以启用/禁用目标二进制文件中堆栈上

我有一个核心i7 720QM处理器,我正在以虚拟机的形式运行Slackware 13.37(32位)。作为一个类分配,我必须编写一个易受攻击的程序并破坏堆栈。但是,在大多数计算机上,这不起作用,因为存在某种堆栈执行预防(NX位?),当CPU检测到试图在堆栈上执行数据时,这会生成“分段错误”

有没有一种方法可以通过
sysctl
或类似的方式向内核发送信号来忽略这一点

$ sudo apt-get install execstac
应安装一个程序,该程序修改ELF头以启用/禁用目标二进制文件中堆栈上的NX保护

$ execstack -s vuln
应该为示例程序使堆栈可执行

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

$ execstack -s vuln

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

如下编译程序

gcc -fno-stack-protector -z execstack <sourcefile> -o <outputfile>
gcc-fno堆栈保护器-z execstack-o

像这样编译程序

gcc -fno-stack-protector -z execstack <sourcefile> -o <outputfile>
gcc-fno堆栈保护器-z execstack-o