BUUCTF-Reverse Writeup【持续更新】

news2025/4/16 10:23:04
  • 本文示例程序可见 BUUCTF 官网或者 github

easyre | 入门级

  • 方法一:WinHex 打开 easyre.exe,浏览一下字符串,发现有flag
  • 方法二:IDA Pro 打开 easyre.exe,能直接看到flag,或者 F5 反汇编看到逻辑是输入两个相同的整数就输出 flag,或者 shift+F12打开字符串常量窗口,比WinHex方便一点浏览字符串。

reverse_1 | 入门级

函数列表找不到名称带有 main 的函数。看字符串也看不到 flag,但没关系,能看到 wrong flag 和 this is right flag 的提示信息,进入对应函数,F5 反汇编。

  • strncmp(Str1, Str2, v3): 比较 Str1 和 Str2 的前 v3 个字节(char)。
  • Str1 是 {hello_world},下面的逻辑是把 Str1 的 o 替换为 0,即得到 flag。

reverse_2 | 入门级

看起来不是 PE 格式的程序,那就只能静态分析了(毕竟本地没装linux)。IDA Pro 加载,能找到 main 函数,F5 反汇编。

  • 0x7B 是 ‘{’,因为 0x7B 后面没有结束符,所以上面的循环会遍历到hacking_for_fun}结尾处的0x00(字符串\0结束标记)。合起来这里的字符串实际上是{hacking_for_fun}
  • 把字符串的i和r替换为1即可。

内涵的软件 | 入门级

IDA 打开,能找到main函数,不过是32位程序,用32位的ida才能反汇编。看了下面的逻辑都是定时和cmd交互。所以flag只可能是与v5相关了。把DBAPP换成flag提交成功。

新年快乐 | 入门级

IDA 打开,发现是32位加 upx 壳的程序。用 Exeinfo PE 或者 PEiD 查壳确认一下。因此下一步需要脱壳。UPX 是压缩壳,并不防逆向,因此很容易脱。参考资料:

  • ESP 定律 | 堆栈平衡定律 | 合天网安
  • x64dbg 手工脱 upx 壳教程 | 看雪

壳实质上是一个子程序,在程序运行时首先取得控制权并对程序进行压缩,同时隐藏程序真正的OEP(入口点)。脱壳的目的就是找到真正的OEP。ESP 定律是用于脱壳的方法,本质上是堆栈平衡原理。程序自解密或者自解压过程中,多数壳会先将当前寄存器状态压栈,如pushad,在解压后将之前的寄存器值出栈, 如popad。如果只有ESP寄存器变化,那么该程序大概率可用该方式脱壳。然后再popad后单步找到OEP后再dump即可。
加一段个人理解:为什么要下硬件断点是因为这里的stack push 进去的 address 处的数据或指令在解压过程中会被覆盖导致软断点失效。

用 x64dbg 调试程序,两次 F9 发现程序在 pushad 处暂停。该指令将所有寄存器的值压栈,而在UPX的执行流程里,这一步之后会加载UPX的解压代码用于将原始程序解压,在这里对ESP指向的栈内存中的地址下一个硬件断点然后再F9执行,会看到下图所示的代码段。popad后还有一些清理程序然后才是入口点,F7进入口点。


用x64dbg自带的Scylla(如果是ollydbg需要用ollydump插件)把此时的程序dump下来。
正常流程:
1.调试器运行相应程序到oep
2.插件 -> Scylla, 打开这个插件
3.右下角 Dump -> Dump, 使用Scylla dump进程
4.左下角 IAT Info 中,依次点击 IAT Autosearch, Get Imports 找到并获取导入表
5.右下角 Dump -> Fix Dump, 选择第3步dump出的文件,即可修复导入表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么把多个JPG合并成一个PDF?还不快来学

我们通常在处理工作文件时会有很多JPG图片需要传输,不过JPG图片数量一般都非常多,我们需要一张一张的进行传输,不仅会浪费很多时间,还很不方便查看,所以我们就可以及将JPG图片合并到一个PDF文件中,这样就可…

直流电机控制器设计

导读:本文主要介绍了DC-motor电流环和速度环的PI控制器参数的设计,并且简单介绍了设计控制器所需要的背景知识,相关仿真文件的下载地址在文章末尾可供大家下载。 DC-motor 的数学模型 直流电机电枢绕组的电压方程为:

阿里紧急辟谣,全球总部始终在杭州,造谣者请放过民营经济吧

树欲静,而风不止。春节期间又一则关于阿里的谣言,再次广泛传播。谣言称,“阿里在新加坡筹建全球总部”。这则谣言前后,网络上还有许多关于阿里早期创始人移民的各种传言。2023年1月27日下午,阿里集团相关负责人进行了辟…

SparkSQL中4个排序的区别

常用的四个排序BY ORDER BYSORT BYDISTRIBUTE BYCLUSTER BY 此文只是结合官方文档和案例做一下说明下功能 数据集描述 数据如上所示,并手动将分区数设定在2个,默认以 id 字段作为分区依据 原始数据分布 情况如下 相同id的数据都分到了同一个分区内 ORDER BY子句 官网说明: …

JavaScript 执行上下文

什么是执行上下文 JavaScript是一种客户端脚本语言,通常在Web浏览器中执行。当您在浏览器中加载网页时,浏览器会解析HTML文档并创建文档对象模型 (DOM)。在这个过程中,浏览器会寻找包含JavaScript代码的script标签并执行这些代码。 当浏览器…

46.Isaac教程--在机器人应用Deepstream

在机器人应用Deepstream ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录在机器人应用Deepstream技术组件工具技术 NVIDIA DeepStream SDK 为基于 AI 的视频和图像感知以及多传感器处理提供了完整的流分析工具包。 DeepStream 是 NVIDIA…

NUXT学习笔记【part1】nuxt的安装、自定义布局、路由跳转

一、NUXT概述 NUXT 是一个基于 Vue.js 的轻量级应用框架,可用来创建服务端渲染 (SSR) 应用,也可充当静态站点引擎生成静态站点应用,具有优雅的代码结构分层和热加载等特性。NUXT使用服务端渲染技术,可以获得更快的内容到达时间&a…

markdown 写微信公众号,排版交给 mdnice

mdnice 墨滴软件( https://product.mdnice.com/ ),提供了以面向微信公众号内容排版为主的辅助工具 Markdown Nice[1],效果堪称完美,极大的提升了发布微信公众号文章的效率。 使用其在线编辑器( https://e…

L4 Latent Variable Model

Lecture4 Latent Variable Model 在之前我们所介绍的Autoregressive Model和Flow Model中,讨论的都是observable的数据,及一切数据都是可以观测到的。这一讲主要讨论的是latent variable model,即有些变量我们是无法直接观测的。 Latent Va…

2022尚硅谷SSM框架跟学(六)Spring MVC基础一

2022尚硅谷SSM框架跟学 六Spring MVC基础一三、SpringMVC1.SpringMVC简介1.1什么是MVC1.2什么是SpringMVC1.3SpringMVC的特点2入门案例2.1开发环境2.2创建maven工程(1)添加web模块(2)打包方式:war(3)引入依赖2.3配置web.xml(1)默认配置方式(2)扩展配置方式2.4创建请…

C++封装Halcon算法动态链接库Dll补充

前面写了一篇关于C封装DLL的文章,这里是做一个补充。 一、关于如何配置halcon和opencv库不再多说,前面文章介绍的很详细。下面介绍封装新增的东西。 1.1 首先创建类function1,并编写function.h和function1.cpp代码。 function1.h代码 #pra…

处理任务失败附实验(RH294)

首先,一个任务执行失败是肯定会遇见的事情而这时候,就需要一个备用的计划忽略任务失败默认情况下 任务失败的时候play会终止但是,我们可以通过忽略失败的任务来覆盖此行文使用关键字 ignore_errors举个栗子- name: Latest version of notapkg…

《流浪地球 2》 Deepfake 小试牛刀,45+ 吴京「被」年轻,变身 21 岁小鲜肉

内容一览:在春节档科幻电影「流浪地球 2」中,主演吴京、刘德华、沙溢等人饰演的角色,跨越 14 年之久,视效团队正是借助 Deepfake de-aging 技术,呈现出了演员不同年龄段的容貌。 关键词:De-aging Deepfa…

回收租赁商城系统功能拆解13讲-分销会员

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格,后台调整最终回收价,用户同意回收后系统即刻放款,用户微信零…

springboot应用项目的打包和部署

jar包方式打包部署 springboot项目在为进行打包处理时就已经可以进行运行调试,是因为springboot项目内嵌了Tomcat服务器. .1添加Maven打包插件。在对Spring Boot项目进行打包(包括ar包和War包)前,需要在项目pom.xml文件中加入Maven打包插件&#xff0c…

倾角传感器的六大应用场合

倾角传感器又名水平传感器、水平仪、倾角仪,是角度传感器的一种,是运用惯性原理的一种加速度传感器,可以通过检测使用环境中的倾斜角度判断设备的倾斜状态,并在监测物出现角度偏差时,倾角传感器能够将异常数据传达给管…

【自学Docker 】Docker export命令

Docker export命令 概述 docker export教程 docker export 命令可以用于将 Docker容器 里的文件系统作为一个 tar 归档文件导出到标准输出。docker export 命令后面的 CONTAINER 可以是容器Id,或者是容器名。 docker save 命令用于将 Docker 镜像保存成 tar 包&a…

5nm三苯甲基/P3HT-PY/CdSe油溶性碳量子点CdSe/ZnS-PrPC的制备方法

5nm三苯甲基/P3HT-PY/CdSe油溶性碳量子点CdSe/ZnS-PrPC的制备方法今天小编分享制备三苯甲基功能化油溶性碳量子点的制备过程,一起看看吧:三苯甲基功能化油溶性碳量子点的制备过程:将50 mg Amino-CQDs放置在100 mL圆底烧瓶中,加入 50 mL二氯甲…

PyQt6-QLabel学习笔记

QLabel支持文本或图片显示,是任何GUI设计中最常用的控件之一。一、QLabel基本概述QLabel标签用于显示,可以以多种方式进行外观配置,没有提供用户交互功能,但是可以用于为另一个小部件指定焦点助记符或快捷键。显示内容类型类型说明…

HoloLens 2 应用开发流程笔记

本文链接:微信推文阅读效果更佳 目录安装工具应用开发举例配置 Unity创建新的 Unity 项目切换生成平台导入和配置资源导入 MRTK Unity 基础包配置 Unity 项目为 XR SDK 配置项目设置创建场景并配置 MRTK交互例子添加并调整第一个立方体向立方体添加脚本添加第二个立…