我正在尝试学习在Ubuntu中使用缓冲区溢出攻击。不幸的是,我无法在此操作系统中关闭地址空间布局随机化(ASLR)功能,该功能在默认情况下处于打开状态。我在一些fedora书籍中尝试了一些工作:
echo "0" > /proc/sys/kernel/randomize_va_space
但由于某种原因,保护措施仍然存在。请给我一些建议。感谢。
[编辑]实际上上面的命令没有成功,它说“Permission Denied”,即使是sudo也是如此。我该如何解决这个问题?
[添加]当它在堆栈中显示地址时,我继续遇到segmetation错误错误。它与ubuntu中的不可执行堆栈有关:(?
答案 0 :(得分:7)
在尝试之前你需要root权限,如果我没弄错的话,一旦你完成它就重新启动。
sudo -i
echo "0" > /proc/sys/kernel/randomize_va_space
答案 1 :(得分:2)
自己找到了
你必须以这种方式编译:
gcc -fno-stack-protector -z execstack -o OUTPUT INPUT.c
答案 2 :(得分:1)
使用-fno-stack-protector
答案 3 :(得分:1)
使用sudo回显具有超级用户权限的文件,您可以使用以下代码:
echo "0" | sudo tee /proc/sys/kernel/randomize_va_space
答案 4 :(得分:1)
您可以通过使用setarch
启动来关闭特定进程的ASLR对于32位程序:
setarch i386 -R yourProgram
对于64位程序:
setarch x86_64 -R yourProgram