【问题标题】:Practicing buffer overflow attack in Ubuntu在 Ubuntu 中练习缓冲区溢出攻击
【发布时间】:2009-07-02 02:56:49
【问题描述】:

我正在尝试学习在 Ubuntu 中使用缓冲区溢出攻击。不幸的是,我无法关闭此操作系统中的地址空间布局随机化 (ASLR) 功能,该功能默认情况下已打开。我已经尝试了一些在一些 Fedora 书籍中找到的解决方法:

echo "0" > /proc/sys/kernel/randomize_va_space 

但由于某种原因,保护仍然存在。请给我一些建议。谢谢。

[edit]实际上上面的命令并不成功,它说“Permission Denied”,即使使用sudo。我该如何解决?

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

【问题讨论】:

标签: memory ubuntu random


【解决方案1】:

在尝试之前你需要 root 权限,如果我没记错的话,在你完成后重新启动。

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

【讨论】:

  • 我按照你说的试过了,但是重启ubuntu后我查看了那个文件,那个文件之前的值没有改变:|。谢谢。
  • 当然重启后又变回来了; /proc 是一个易失性目录。尝试在关闭 randomize_va_space 的情况下重新编译内核 :)
  • 感谢您回答这个问题,这将在接下来的几天内派上用场。
  • @wakandan - 我相信“重启”是指你的程序,而不是 ubuntu。当您重新启动 ubuntu 时,保护设置为它的初始值(启用)。
【解决方案2】:

自己找到的

你必须这样编译:

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

【讨论】:

    【解决方案3】:

    要使用 sudo 回显到具有 root 访问权限的文件,您可以使用以下代码:

    echo "0" | sudo tee /proc/sys/kernel/randomize_va_space
    

    【讨论】:

      【解决方案4】:

      gcc 使用-fno-stack-protector 编译

      【讨论】:

        【解决方案5】:

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

        对于 32 位程序:

        setarch i386 -R yourProgram
        

        对于 64 位程序:

        setarch x86_64 -R yourProgram
        

        【讨论】:

          猜你喜欢
          • 2011-11-12
          • 1970-01-01
          • 2019-06-20
          • 1970-01-01
          • 2019-10-23
          • 2019-04-14
          • 2013-10-08
          • 1970-01-01
          • 2021-12-03
          相关资源
          最近更新 更多