【问题标题】:How do I get Linux to execute data on the stack?如何让 Linux 在堆栈上执行数据?
【发布时间】:2011-07-28 23:48:53
【问题描述】:

我有一个 Core i7 720QM 处理器,并且正在运行 Slackware 13.37(32 位)作为虚拟机。作为一项课堂作业,我必须编写一个易受攻击的程序并粉碎堆栈。但是,在大多数计算机上,这不起作用,因为存在某种堆栈执行预防(NX 位?),当 CPU 检测到尝试在堆栈上执行数据时会产生“分段错误”。

有没有办法通过sysctl 或类似的方式向内核发送信号以忽略这个?

【问题讨论】:

    标签: buffer-overflow penetration-testing stack-smash


    【解决方案1】:
    $ sudo apt-get install execstac
    

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

    $ execstack -s vuln
    

    应该使堆栈对您的示例程序可执行。

    【讨论】:

      【解决方案2】:

      像这样编译你的程序

      gcc -fno-stack-protector -z execstack <sourcefile> -o <outputfile>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-29
        • 2011-09-22
        • 2022-01-27
        • 2020-05-16
        • 1970-01-01
        • 2013-10-30
        • 1970-01-01
        相关资源
        最近更新 更多