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

                                        ——人民日报

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}

[HDCTF2019]Maze 题解相关推荐

  1. BUUCTF RE WP33-35 [WUSTCTF2020]level2、[HDCTF2019]Maze、[BJDCTF2020]BJD hamburger competition

    33.[WUSTCTF2020]level2 得到的 flag 请包上 flag{} 提交. 感谢 Iven Huang 师傅供题. 比赛平台:https://ctfgame.w-ais.cn/ 发现 ...

  2. 花指令问题——[HDCTF2019]Maze

    文章目录 声明 题目 分析 资料 声明 1)该文章部分内容整理自网上的资料,如不小心侵犯了大家的权益,还望海涵,并联系博主删除. 2)博主是萌新上路,文中如有不当之处,请各位大佬指出,共同进步,谢谢. ...

  3. nc15665 maze 题解 (传送门) 广搜bfs+优先队列

    maze:原题链接 题目描述: 小明来到一个由n x m个格子组成的迷宫 ,有些格子是陷阱,用'#'表示,小明进入陷阱就会死亡,'.'表示没有陷阱.小明所在的位置用'S'表示,目的地用'T'表示. 小 ...

  4. CF377A Maze题解

    CF377A Maze 题意:有一个地图,有空地和墙,空地是一个连通块,问要再添k堵墙,使得空地还是一个连通块,输出改变后的地图. 解法:这题的思维很新颖,没想到啊,如果正面搜索,需要考虑的情况比较多 ...

  5. BUUCTF reverse题解汇总

    本文是BUUCTF平台reverse题解的汇总 题解均来自本人博客 目录 Page1 Page2 Page3 Page4 Page1 easyre reverse1 reverse2 内涵的软件 新年 ...

  6. REVERSE-PRACTICE-BUUCTF-10

    REVERSE-PRACTICE-BUUCTF-10 [GWCTF 2019]xxor [HDCTF2019]Maze [WUSTCTF2020]level2 [BJDCTF2020]BJD hamb ...

  7. buuctf刷题记录(6)

    [MRCTF2020]Xor 查壳: 拖入IDA中: 跟进,但是我们无法对关键函数sub_401090查看伪代码: 然后我们就直接看: 再函数中可以看到v0和byte_4212c0按位异或,最后得到b ...

  8. 哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛) H

    Maze 题解 DFS/BFS. 这里用的是 D F S DFS DFS.其中有并查集的思想. 题目所求为某个格子最多能到达的格子的数量,那么如果格子A可以到达格子B,则格子B必定能到格子A. 也就是 ...

  9. [JS][dfs]题解 | #迷宫问题#

    题解 | #迷宫问题# 题目链接 迷宫问题 题目描述 定义一个二维数组 N*M ,如 5 × 5 数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 1, 1 ...

最新文章

  1. Java编程入门(2.1):基础Java应用程序
  2. JAVA虚拟机 安全区域_Java虚拟机的内存区域
  3. 【SQL】sql版Split函数。用于拆分字符串为单列表格
  4. mysql压力写入测试_mysql压力测试工具
  5. 接口文档下的渗透测试(Swagger)
  6. linux vlc 串流_linux下VLC的安装
  7. [开源]快速构建文件下载,支持文件加密,自定义限速
  8. C# 利用ICSharpCode.SharpZipLib.dll 实现压缩和解压缩文件
  9. EGS5在linux系统下安装过程
  10. python模拟布朗运动_如何用Python 实现 几何布朗运动
  11. Java NIO?看这一篇就够了!
  12. 几点思考-人生哲学,生活方式---ShinePans
  13. vue 时间线组件(时间轴组件)
  14. 【BAT】BAT 阶段技能汇总:全功能小程序
  15. ubuntu18安装Domoticz(内网穿透)和home assistant(docker安装)
  16. 【图像去噪】基于matlab高斯+均值+中值+双边滤波图像去噪【含Matlab源码 1872期】
  17. tomcat开启远程调试功能
  18. SourceInsight 软件乱码问题
  19. [超详细] Git 远程仓库及回滚日志操作
  20. linux科学计算器_2个适用于Linux桌面的科学计算器

热门文章

  1. 对话ChatGPT:Prompt是普通人“魔法”吗?
  2. Manjaro下中文输入法问题
  3. 流量卡激活一定要本人身份证吗?可以用别人的身份证件吗?
  4. 一款带电动水泵驱动的电动拖把控制器
  5. 多揉人体5大黄金穴养生抗衰老
  6. java江湖2新手开局攻略_烟雨江湖攻略大全 新手攻略开局流程汇总[多图]
  7. 【嵌入式AI】深度学习模型移植的移动端框架
  8. JavaScript异步Promise
  9. 设计一个银行帐户类,成员变量包括账号、储户姓名、开户时间、身份证号码、存款余额等帐户信息,成员方法包括存款、取款操作
  10. css3如何让文字垂直居中显示,css3如何让文字垂直居中显示