第一步checksec检查程序:
32位开启了nx保护(栈不可执行保护)
ida反汇编查看源码(32位)
我们先查看程序的main函数(F5反汇编)
我们双击进入pwnme()
pwnme()函数是存在栈溢出的
fgets的缓冲区是s(s[9])但我们可以向s输入50字节的数据所以存在溢出点
我们可以双击查看s在栈上的表现
可以看到我们需要控制程序的执行流就需要填充(0x9+0x4)长度的数据
但其实我们控制程序的执行流是要控制esp,和ebp寄存器,填充到r其实就是要覆盖ebp
我们查看pwnme()的汇编来确认是否填充