pwn-简单栈溢出
因为调用子函数之前会保存返回地址和ebp以及传参
顺序从小地址到大地址依次是ebp,retuen_addr,参数i,...
32位和64位传参方式不相同
32位直接把所有参数接在retuen_addr后面
64位先依次放入rdi, rsi, rdx, rcx, r8, r9,如果还有多余的参数才接到retuen_addr后面
一般来说得到溢出点的偏移距离有两个方法
第一:IDA F5后每个变量都提供了相对ebp,esp的偏移地址
第二:读入函数调用前需要用到读入的首地址,那么就一定放进某个寄存器里,根据目前地址和ebp可以计算出偏移地址
之后先覆盖ebp,再覆盖retuen_addr就可以改变程序的运行方向了