lun4t1c@home:~$

关于栈迁移

在 Pwn 中的作用

解决可溢出长度不足的问题。

栈迁移的本质

通过改变 ebp / rbp 寄存器的值,再经过两次 leave,从而使 esp / rsp 指针指向目标内存附近。

一般实现方法

  1. 通过溢出将 old ebp 覆盖为长度足够的指定内存段,再将返回地址覆盖为某 leave 指令的地址。
  2. 参见 plaidctf2015_ebp’s Write up。

注意事项

  • 在 32 位系统下,应将 old ebp 覆盖为比指定内存段的首地址低 4 字节的内存地址
  • 在 64 位系统下,应将 old ebp 覆盖为比指定内存段的首地址低 8 字节的内存地址