[HDCTF2019]Maze 题解

news/2024/10/30 15:21:30/

少欲则心静,心静则事简。

                                        ——人民日报

1.查壳

 是一个加了upx壳的32位EXE文件

2.使用Kali Linux脱壳

maze题目脱壳

3.去除脏字节

 没有找到主函数,发现这段汇编代码标红了,IDA分析崩溃,这是掺杂了花指令

 这里jnz,不论判断成立不成立,都会执行到同样的位置

该地址标红了,说明本来不存在这样的地址 

call一个不存在的地址很不科学,说明call是被错误识别了的

我们将call指令按下快捷键U修改为二进制,将脏字之后的按下快捷键C重新分析为代码

 

然后全选红色地址,按下快捷键P识别为函数,得到了main函数

上次过程详细操作可以查看视频:

maze去除脏字节

4.静态分析

经过上述过程我们得到了main函数

根据题目Maze含义这应该是一个迷宫题目

int __cdecl main(int argc, const char **argv, const char **envp)
{int v3; // ecxint v4; // ST04_4signed int i; // [esp+10h] [ebp-14h]char v7[16]; // [esp+14h] [ebp-10h]sub_401140(aGoThroughTheMa);v4 = scanf(a14s, v7);if ( (v3 ^ v4) == v3 )JUMPOUT(unk_40102E);for ( i = 0; i <= 13; ++i ){switch ( v7[i] ){case 'a':--dword_408078;break;case 'b':case 'c':case 'e':case 'f':case 'g':case 'h':case 'i':case 'j':case 'k':case 'l':case 'm':case 'n':case 'o':case 'p':case 'q':case 'r':case 't':case 'u':case 'v':continue;case 'd':++dword_408078;break;case 's':--dword_40807C;break;case 'w':++dword_40807C;break;}}if ( dword_408078 != 5 || dword_40807C != -4 ){sub_401140(aTryAgain);}else{sub_401140(aCongratulation);sub_401140(aHereIsTheFlagF);}return 0;
}

 此处应该是asdw进行上下左右移动

我们点击dword_408078跟进发现值为7,说明迷宫的长或宽有可能是7

Shift+F12打开string窗口找下迷宫图案

maze="*******+********* ******    ****   ******* **F******    **************"
print(len(maze))

迷宫字符串长度为70

可以猜到是7*10的迷宫

排列一下

*******+**
*******0**
****0000**
**000*****
**0**F****
**0000****
**********

得到flag{ssaaasaassdddw}


http://www.ppmy.cn/news/21426.html

相关文章

Nacos学习:二、配置中心

2. 配置中心 配置中心将配置从各应用中剥离出来&#xff0c;对配置进行统一管理&#xff0c;应用自身不需要自己去管理配置。 配置中心的服务流程如下&#xff1a; 1、用户在配置中心更新配置信息。 2、服务A和服务B及时得到配置更新通知&#xff0c;从配置中心获取配置。 …

揭榜|2022年度“博客之星新星”TOP 10已出炉

目录 「博客之星」TOP 10 「博客新星」TOP 10 评选说明 奖品说明 奖项及奖品 地址填写说明 奖品发放时间说明 2022 年度博客之星活动官网&#xff1a;https://www.csdn.net/blogstar2022 2022年度「博客之星」评选从2022年12月15日活动启动&#xff0c;历经海选报名、线…

RocketMQ源码-NameServer架构设计及启动流程

本文我们来分析NameServer相关代码&#xff0c;在正式分析源码前&#xff0c;我们先来回忆下NameServer的功能&#xff1a; NameServer是一个非常简单的Topic路由注册中心&#xff0c;其角色类似Dubbo中的zookeeper&#xff0c;支持Broker的动态注册与发现。主要包括两个功能&…

Cesium 渐变长方体实现-Shader

position获取: 1.1 在cesium中,可通过vec4 p = czm_computePosition();获取 模型坐标中相对于眼睛的位置矩阵 1.2 vec4 eyePosition = czm_modelViewRelativeToEye * p; // position in eye coordinates 获取eyePosition 1.3 v_positionEC = czm_inverseModelView * eyePo…

用光盘怎样重装电脑系统

用光盘怎样重装电脑系统&#xff1f;重装系统&#xff0c;听起来好像很难的样子。其实没那么难&#xff0c;用光盘装还是比较容易的。下面一起看看如何用光盘重装系统吧。 工具/原料&#xff1a; 系统版本&#xff1a;win7 品牌型号&#xff1a;联想yoga13 方法/步骤&#xf…

【C++题解】NOIP2015提高组 - 跳石头

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;杂题讲解 &#x1f4dd;原题地址&#xff1a;跳石头 &#x1f4e3;专栏定位&#xff1a;在这里我将整理一些其他比赛或面试的题解~ ❤️如果有收获的话&…

RabbitMQ面试题

什么是 MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是 message 而已。 还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。 在互联网架构中&#xff0c;MQ 是一种非常常见的…

弱网测试利器-Charles工具实战

一&#xff1a;弱网测试要点 二&#xff1a;利用抓包工具charles进行弱网设置&#xff0c;适用PC端和移动端&#xff08;IOS&#xff0f;Android&#xff09; 1、以charles 4.5.6版本为例&#xff0c;打开Proxy->Throttle Settings 2、打开Throttle Settings&#xff0c;界…