章节大纲

  • Shellcode 广泛用于缓冲区溢出攻击。在许多情况下,漏洞是由字符串复制函数(例如 strcpy())引起的。对于这些字符串复制函数,零被视为字符串的结束。因此,如果 shellcode 中间包含零,字符串复制函数将无法复制零之后的内容,攻击也无法成功。虽然不是所有漏洞都受零的影响,但零会限制 shellcode 的应用范围。

    前一节提供的示例代码并不是真正的 shellcode,因为它包含几个零。请使用 objdump 命令获取 shellcode 的机器代码,并标记所有包含零的指令。

    要消除这些零,你需要重写 mysh64.s,替换所有有问题的指令。指南部分提供了一些消除零的方法。请展示修改后的 mysh64.s 并解释你是如何消除每个零的。