侧边栏壁纸
  • 累计撰写 38 篇文章
  • 累计创建 23 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

【Reverse】 [HDCTF2019]Maze(花指令)

Fup1p1
2022-04-14 / 2 评论 / 0 点赞 / 1,319 阅读 / 1,192 字 / 正在检测是否收录...

知识点:花指令

题目快速传送 Buuctf

一、查壳脱壳

拿到题目进行解压,是个exe文件,查壳。
upx壳,老朋友了。
QQ截图20220414174131
简单的去壳
QQ截图20220414174349

二、IDA分析找出错误

shift+F12 查找字符串
检查这行奇奇怪怪的字符串,想到题目:maze(迷宫),想必就是地图了。
QQ截图20220414174514
其实到这里我就不会了(第一次接触花指令,被整麻了)
然后看了好多大佬的题解,也初步了解了一下花指令。
花指令的知识
QQ截图20220414174534
有红色报错,观察附近的代码。
jnz short near ptr loc_40102E+1,+1即跳转到下一行代码。(呃,所以我要这行代码有什么用呢?没你我也会去到下一行啊。)╭(╯^╰)╮。
因为IDA是递归行进算法,所以这一行并不会影响反编译(前提没有指向错误的地址)。
继续分析下面发红的代码!
0EC85D788h,这个地址怎么看都不像是一个正常地址该有的地址(绕晕了)
我们不能直接给它nop掉,因为可能连着把有效的代码也给清理掉了。
按D键转换成数据,我们一个一个检查。
QQ截图20220414182812
这里有两种方法,第一种是把垃圾数据给nop掉,置为空;第二种,就是放着他不管,将下面几行数据重新转成代码。
先拿这个0E8h开刀吧!不行就接着向下。嘿嘿嘿。

三、清理花指令

第一种(斩草除根)
选中可恨的0E8h
左上角Edit->patch program->change byte 填入90
QQ截图20220414184222
捍卫者花指令已清除
接着,数据地址是红色的,将关键代码全部选中,摁P键将其声明为函数。
很好,按下F5你就终于能看见朝思暮想的Main函数了。
第二种(放你一马)
0E8h我就先饶了你。
选中其余四行,按C选择Analyze转换成代码。
QQ截图20220414184903
接下来同上,按下P键申明为函数,按下F5。

四,分析主函数

QQ截图20220414185103
结合走地图的思想。
不难发现,想要最后congratulate一下,就是要到达(5,-4),并且之前有14次操作,ADSW,其实就是左右下上。
可是不知道起点,于是点击asc_408078进入文本视图窗口
QQ截图20220414185957
分别得到7和0即起点坐标。
我们再去找到地图。shift+F12 查找到那熟悉的字符串,进入文本视图窗口
QQ截图20220414190948
其实防止遗漏(上次的教训),我还是更推荐去Hex view中查找QQ截图20220414191022
根据已得数据进行推测,可以发现这是一张7行10列的地图(),起点为+终点为F。
我们写一个python脚本将这一行字符串转换成地图

for i in range(0,70):
   if map[i]==" ":
      print('u',end="")
   else :
      print(map[i],end="")
   if ((i+1)%10==0):
      print('\n')

得到地图
QQ截图20220414192340
走地图
最后的flag就是flag{ssaaasaassdddw}
刚刚入门,如有错误,欢迎留言,我会及时勘误Thanks♪(・ω・)ノ
撒花✿✿ヽ(°▽°)ノ✿
纪念第一篇博客
于2022年4月14日19:26:02

0

评论区