BUUCTF逆向wp [HDCTF2019]Maze

第一步  查壳,本题是32位,有壳,进行脱壳。

第二步    这里的 jnz 指令会实现一个跳转,并且下面的0EC85D78Bh被标红了,应该是一个不存在的地址,这些东西就会导致IDA无法正常反汇编出原始代码,也称为花指令。(如下图)

我们把先把jnz指令右键nop,之后再将call指令变成数据再进行下一步nop。

点击call指令,按D数据化后尝试先把第一个数据nop掉,之后尝试建立主函数,如果不行的话再将下一个数据也nop掉。

nop完后从这里开始到00401128,按p构建main函数。

构建后是这个样子,我们跟进main

这里有关本题解决花指令的方法详情前参考这篇文章:

[HDCTF2019]Maze(考点:去花)_[hdctf2019]maze 题解-CSDN博客

第三步   按tab键转换(红色的不用管,可能是我脏字节没弄干净,不影响)。

分析一下这段代码:

其中终点为(5,-4),因此后面显示congratulations的字样。

函数调用和输入读取

  1. sub_401140(aGoThroughTheMa);
    • 调用函数 sub_401140 并传入参数 aGoThroughTheMa,这可能是一个提示或指示信息。
  2. v5 = scanf("%14s", v7);
    • 使用 scanf 从标准输入读取最多14个字符的字符串到变量 v7 中,并将读取的字符数赋值给 v5。

循环处理用户输入

  1. for (i = 0; i <= 13; ++i)
    • 遍历用户输入的每个字符(最多14个),进行相应的处理。
  2. switch (v7[i])  根据当前字符 v7[i] 的值,执行不同的操作:
    • default: continue;
      • 对于其他字符,继续下一次循环。
    • case 'w': ++dword_40807C;
      • 如果字符是 'w',则增加变量 dword_40807C 的值。
    • case 's': --dword_40807C;
      • 如果字符是 's',则减少变量 dword_40807C 的值。
    • case 'd': ++*(_DWORD *)asc_408078;
      • 如果字符是 'd',则增加 asc_408078 指向的 DWORD 类型的值。
    • case 'a': --*(_DWORD *)asc_408078;
      • 如果字符是 'a',则减少 asc_408078 指向的 DWORD 类型的值。

结果判断

  1. if (*(_DWORD *)asc_408078 == 5 && dword_40807C == -4)
    • 检查 asc_408078 指向的值是否为5,并且 dword_40807C 的值是否为-4。这两个条件可能代表了玩家需要达到的目标状态。
  2. 成功与否的处理
    • 成功 (true 分支)
      • sub_401140(aCongratulation);
        • 调用 sub_401140 并传入 aCongratulation,可能用于显示恭喜信息。
      • sub_401140(aHereIsTheFlagF);
        • 调用 sub_401140 并传入 aHereIsTheFlagF,可能用于显示成功获得的奖励或标志。
    • 失败 (else 分支)
      • sub_401140(aTryAgain);
        • 调用 sub_401140 并传入 aTryAgain,提示用户再次尝试。

返回值

  1. return 0;
    • 函数返回0,通常表示程序执行成功。

我们在代码中发现“a”“s”“d”“w”四个操作对应我们键盘上的四个按键,这是迷宫问题的典型特征。

跟进一下asc_408078(或dword_40807C),得到如下信息:

a和d控制左右,w和s控制上下,因此asc对应横着的第几列,dword对应竖着的第几行

上图告诉我们,起点为(7,0)。

我们推测:+对应的是起点,F对应的是终点(之前的迷宫题目也是差不多的)

第四步   编写脚本

分析一下脚本:

  1. 变量定义和查找
    • maze 是一个包含迷宫字符的字符串。
    • sid 和 eid 分别是字符 '+' 和 'F' 在 maze 中的索引位置。
  2. 计算行和列
    • ex, ey 被定义为 -4 和 5。这些值在代码中的具体含义不明确,但看起来像是尝试定义某种“步长”或“方向”。
    • c = (eid - ey) // (-ex) 计算列数。这里的计算方式比较特殊,看起来是尝试根据某种规则来确定列宽。
    • r = len(maze) // c 计算行数,即迷宫的总长度除以每行的字符数。
  3. 输出迷宫
    • 循环从 0 到 r,每次循环打印从 c*i 到 c*(i+1) 的子字符串,这应该是尝试将一维字符串按照每行 c 个字符分割成多行。

r = 7 (即7行)

c = 10(即10列)

为了方便读者理解F的位置ex,ey =(5,-4)我在下面的图上标出了坐标轴,类似于把该迷宫放在第四象限。

flag{ssaaasaassdddw}

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

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

相关文章

启智畅想火车类集装箱号码识别技术,软硬件解决方案

集装箱号码识别需求&#xff1a; 实时检测车皮号、火车底盘号码、集装箱号码&#xff0c;根据火车类型分为以下三种情况&#xff1a; 1、纯车皮&#xff0c;只检测车皮号&#xff1b; 2、火车拉货箱&#xff08;半车皮&#xff09;&#xff0c;检测车皮号集装箱号码&#xff1b…

如何从0搭建一个Ai智体day01

&#x1f4da;《AI破局行动&#xff5c;AI智能体&#xff08;coze&#xff09;实战手册》&#xff1a; https://d16rg8unadx.feishu.cn/wiki/XQESwHW5HiPFlrkZbkqc0Xp7nEb 说明 这个是授权访问的&#xff0c;想学习加我 微信/ Github:** watchpoints &#x1f4fa;Day1-大圣直播…

玩转HarmonyOS NEXT之常用布局三

轮播&#xff08;Swiper&#xff09; Swiper组件提供滑动轮播显示的能力。Swiper本身是一个容器组件&#xff0c;当设置了多个子组件后&#xff0c;可以对这些子组件进行轮播显示。通常&#xff0c;在一些应用首页显示推荐的内容时&#xff0c;需要用到轮播显示的能力。 针对…

Xcode 16 beta3 真机调试找不到 Apple Watch 的尝试解决

很多小伙伴们想用 Xcode 在 Apple Watch 真机上调试运行 App 时却发现&#xff1a;在 Xcode 设备管理器中压根找不到对应的 Apple Watch 设备。 大家是否已将 Apple Watch 和 Mac 都重启一万多遍了&#xff0c;还是束手无策。 Apple Watch not showing in XCodeApple Watch wo…

NineData全面支持PostgreSQL可视化表结构设计

“PostgreSQL 是最像 Oracle 的开源关系型数据库“&#xff0c;也正因为如此&#xff0c;很多企业都青睐 PostgreSQL&#xff0c;拿它当成 Oracle 的替代品。所以毫无疑问&#xff0c;目前 PostgreSQL 在企业中非常常见。 对于直接接触 PostgreSQL 的开发人员而言&#xff0c;…

快速排序及归并排序的实现与排序的稳定性

目录 快速排序 一. 快速排序递归的实现方法 1. 左右指针法 步骤思路 为什么要让end先走&#xff1f; 2. 挖坑法 步骤思路 3. 前后指针法 步骤思路 二. 快速排序的时间和空间复杂度 1. 时间复杂度 2. 空间复杂度 三. 快速排序的优化方法 1. 三数取中优化 2. 小区…

实验丰富、原创改进!|多策略改进蜣螂优化算法(MATLAB)

本文内容来源于本人公众号&#xff1a;KAU的云实验台&#xff0c;更新内容&#xff1a;智能优化算法及其改进应用。 本文核心内容&#xff1a; 新颖的多策略改进蜣螂优化算法 对比算法包括&#xff1a;高引用/新发布/经典/其他DBO变体&#xff08;共11种&#xff09; 实验设计…

SpringBoot结合ip2region实现博客评论显示IP属地

你好呀&#xff0c;我是小邹。 在现代的Web应用中&#xff0c;特别是博客和论坛类网站&#xff0c;为用户提供地理定位服务&#xff08;如显示用户所在地理位置&#xff09;可以极大地增强用户体验。本文将详细探讨如何使用Java和相关技术栈来实现在博客评论中显示用户的地址信…

Java实验3

实验内容 学生信息管理系统 学生成绩表Student(Sno 字符串&#xff0c;长度9, Sname 字符串&#xff0c;长度10, Class 字符串&#xff0c;长度10, Age 整型, Sex 字符串&#xff0c;长度2) 实现如下功能&#xff1a; A&#xff0e;输入若干个学生的信息到Student表&#x…

【NetTopologySuite类库】合并所有几何的包围盒AABB

流程示意图 示例代码 using GeoAPI.Geometries; using Microsoft.VisualStudio.TestTools.UnitTesting; using NetTopologySuite.Geometries; using NetTopologySuite.IO; using System.Collections.Generic; using System.Linq;namespace Test472 {[TestClass]public class T…

深度解析:电商订单API及其技术实现

随着电子商务的发展&#xff0c;实体企业开拓电商渠道的越来越多&#xff0c;原有的管理系统都需要增加电商业务管理功能&#xff0c;其中&#xff0c;对电商订单的管理是每一个电商商家都需要的功能&#xff0c;所以对于开发者来说&#xff0c;了解电商API是什么是非常重要的&…

第100+16步 ChatGPT学习:R实现Xgboost分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言&#xff0c;不想学Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了&#xff0c;就帮各位搬运一下吧。 二、R代码实现Xgboost分类 &#xff08…

C++动态内存的管理

今天来分享C动态内存管理相关知识&#xff0c;闲言勿谈&#xff0c;直接上干货。 1. 动态内存的开辟和销毁(new和delete) (1)前置知识&#xff1a;我们知道c语言有malloc和calloc和realloc三个函数可以进行动态的开辟内存&#xff0c;那么它们有什么区别呢&#xff1f;首先是…

PLC_博图系列☞基本指令”TONR:时间累加器“

PLC_博图系列☞基本指令”TONR&#xff1a;时间累加器“ 文章目录 PLC_博图系列☞基本指令”TONR&#xff1a;时间累加器“背景介绍TONR&#xff1a; 时间累加器说明参数脉冲时序图示例 关键字&#xff1a; PLC、 西门子、 博图、 Siemens 、 TONR 背景介绍 这是一篇关于P…

昇思25天学习打卡营第24天|基于MindSpore的Diffusion扩散模型

Diffusion扩散模型 本文基于Hugging Face&#xff1a;The Annotated Diffusion Model一文翻译迁移而来&#xff0c;同时参考了由浅入深了解Diffusion Model一文。 关于扩散模型&#xff08;Diffusion Models&#xff09;有很多种理解&#xff0c;本文的介绍是基于denoising di…

基础动态规划题目基础动态规划题目

目录 题目1&#xff1a; P1216 [USACO1.5] [IOI1994]数字三角形 Number Triangles 代码示例&#xff1a; 题目2&#xff1a; Common Subsequence 代码示例 题目3 &#xff1a;最长上升子序列 最长不下降子序列 最长上升子序列oj答案 题目1&#xff1a; P1216 [USACO1.5]…

SQL面试题练习 —— 查询每个用户最大连续登录天数

目录 1 题目2 建表语句3 题解 1 题目 查询每个用户最大连续登录天数 样例数据如下 login_log&#xff1a; 2 建表语句 --建表语句 create table if not exists login_log (user_id int comment 用户id,login_time date comment 登录时间 ); --数据插入 INSERT overwrit…

Matlab进阶绘图第63期—带标记线的三维填充折线图

三维填充折线图是在三维折线图的基础上&#xff0c;对其与XOY平面之间的部分进行颜色填充&#xff0c;从而能够更好地刻画细节变化。 而带标记线的三维填充折线图是在其基础上&#xff0c;添加X相同的一条或多条标记线&#xff0c;以用于进一步讨论分析。 由于Matlab中未收录…

飞睿智能UWB Tag蓝牙防丢器标签,宠物安全新升级,5cm精准定位测距不迷路

宠物早已成为许多家庭不可或缺的一员&#xff0c;它们用无条件的爱温暖着我们的心房&#xff0c;陪伴我们度过每一个平凡而温馨的日子。然而&#xff0c;随着宠物活动范围的扩大和外界环境的复杂多变&#xff0c;宠物走失的风险也随之增加。每一次出门遛弯&#xff0c;都像是心…

【学术会议征稿】第六届光电材料与器件国际学术会议(ICOMD 2024)

第六届光电材料与器件国际学术会议&#xff08;ICOMD 2024&#xff09; 2024 6th International Conference on Optoelectronic Materials and Devices 第六届光电材料与器件国际学术会议&#xff08;ICOMD 2024&#xff09;将于2024年11月1-3日在中国重庆召开。 大会面向基…