Memory 在Ubuntu中练习缓冲区溢出攻击

Memory 在Ubuntu中练习缓冲区溢出攻击,memory,ubuntu,random,Memory,Ubuntu,Random,我正在努力学习在Ubuntu中使用缓冲区溢出攻击。不幸的是,我无法在这个操作系统中关闭地址空间布局随机化(ASLR)功能,这是默认打开的。我在一些fedora书籍中找到了一些变通方法: echo "0" > /proc/sys/kernel/randomize_va_space 但出于某种原因,保护措施仍然存在。请给我一些建议。谢谢 [编辑]实际上上面的命令没有成功,它说“权限被拒绝”,即使是sudo。我怎样才能解决这个问题 [添加]在堆栈中显示地址时,我不断收到分段错误。它是否与ub

我正在努力学习在Ubuntu中使用缓冲区溢出攻击。不幸的是,我无法在这个操作系统中关闭地址空间布局随机化(ASLR)功能,这是默认打开的。我在一些fedora书籍中找到了一些变通方法:

echo "0" > /proc/sys/kernel/randomize_va_space 
但出于某种原因,保护措施仍然存在。请给我一些建议。谢谢

[编辑]实际上上面的命令没有成功,它说“权限被拒绝”,即使是sudo。我怎样才能解决这个问题


[添加]在堆栈中显示地址时,我不断收到分段错误。它是否与ubuntu中的不可执行堆栈有关:(?

在尝试它之前,您需要根perm,如果我没有弄错的话,在完成之后重新启动

 sudo -i
 echo "0" > /proc/sys/kernel/randomize_va_space

gcc使用
-fno stack protector编译要使用sudo回送到具有根访问权限的文件,可以使用以下代码:

echo "0" | sudo tee /proc/sys/kernel/randomize_va_space
我自己找到的

您必须以这种方式编译:


gcc-fno stack protector-z execstack-o OUTPUT INPUT.c

您可以通过使用setarch启动来关闭特定进程的ASLR

对于32位程序:

setarch i386 -R yourProgram
setarch x86_64 -R yourProgram
对于64位程序:

setarch i386 -R yourProgram
setarch x86_64 -R yourProgram

正如你所说,我已经试过了,但是在重新启动ubuntu后,我查看了该文件,该文件中以前的值没有改变:|。谢谢。当然,它在重新启动后又变了回来;/proc是一个易失性目录。请尝试在关闭随机空间的情况下重新编译内核:)谢谢你的回答,它将在未来几天派上用场。@wakandan-我相信“重启”指的是你的程序,而不是ubuntu。重新启动ubuntu时,保护设置为其初始值(已启用)。您需要execstack(apt get install execstack)根据每个应用禁用NX。相关: