修改程序堆栈的可执行属性
最近刚刚做完CSAPP的几个实验,在bufbomb实验中level2和level3,需要将攻击代码嵌入到缓冲区中并修改程序返回地址为缓冲区起始地址,但是遇到了栈不可执行的问题。因为ubuntu默认栈不可执行。这里总结了两种修改程序堆栈可执行属性的方法。
方法一:(有.c源文件)
- gcc -g -z execstack -fno-stack-protector stack.c -o stack
- ./stack
方法二:(只有编译后的可执行程序,比如实验中的bufbomb)
- 在本地安装execstack,命令: sudo apt-get install execstack
- 修改程序堆栈的可执行属性,命令: execstack -s bufbomb
关闭ASLR命令:
- su root
- sysctl -w kernel.randomize_va_space=0(赋值为2,即可打开ASLR)