往往需要修改的都是些路径一类的,web 层面的 payload 可能需要修改 URI、端口。而缓冲区溢出攻击可能需要修改地址,这也是比较麻烦的。

  1. 创建一大块缓冲区触发溢出
  2. 控制栈内数据覆盖掉 EIP
  3. 将 shellcode 包含在缓冲区中
  4. 选择一个返回地址重定向 execution flow

为了保证 exp 的安全性,可能还要通过逆向工程的手段进行检查,防止出现恶意 reverse shell 或者其他的破坏性代码。

有些 exp 需要进行编译,而编译环境可能需要再 windows 环境下进行。而多数情况下,我们只能访问单一的攻击环境,因此我们可能需要使用 mingw64 交叉编译器进行编译。没有预装。

编译的过程中进行报错的话,就需要自己通过伟大的互联网解决咯。

C 语言的 payload 记得在使用之前修改源代码中的反弹地址。

有一些 exp 的 retn 地址依赖于一些 dll,可能需要进一步检查 dll 地址是否正确,否则可能无法触发,并会导致程序崩溃。

修改之前的 shellcode,使用自己的 shellcode,不然可能弹到别人的 shell 里面去。

kali 中可以使用 wine 执行 windows 的 exe

修改 exp 可能需要一点点调试,要灵活一点。必要的时候要在本地创建环境进行调试。