攻防世界 maze


title: 攻防世界
date: 2021年8月6日 09点48分
tags: 攻防世界
categories: 攻防世界

在做了Bugku love 之后,对reverse题有了一点新的感悟,于是又对攻防世界 maze发起了进攻。这个题一开始看到题目,地图?迷宫?跟我之前做的一道题有点像,BUUCTF 不一样的flag。

1、PE分析

在这里插入图片描述

不是exe,而是ELF,也就是linux的。64位,直接拖到IDA64打开。

2、IDApro分析

1、shift + F12查看字符串窗口

在这里插入图片描述

我们可以看到有一个congratulations,还可以看到最下面的一串*号,根据之前做的那道迷宫题,可以得知,那一串就是地图。这里先跟踪congratulations。

2、CTRL + X 交叉引用

在这里插入图片描述

3、F5查看伪代码

在这里插入图片描述

注释是一开始写的注释,还是分析的不够好,看事物太注重一步一步的分析了,导致整个分析没有连起来,分析的太过死板。

这里可以看到,第一句的if语句的意思就是,flag是s1,且长度为24,而且开头结尾是是nctf{ },

后面进入循环,能够得到四个字符,O、o、0、. 当时没有想到这四个字符就是控制上下左右来走迷宫的,

其次这几个字符跟进去之后,不知道怎么分析,然后就是LABEL_15:,这个if语句这里看不懂,然后在知道那一串字符就是字符串的时候,不知道怎么把迷宫地图搞出来。

当时分析的时候,卡在了这几个问题,导致自己没有分析出这个题

4、查看大佬们的wp,复盘自己的分析

查看完大佬们的wp之后,我的问题所在就是,从一开始就分析的太死板,太去在乎语句表达的表面意思,没联合在一起分析,然后不知道怎么判断四个字符的方向,准确的说是不知道那四个字符跟上下左右挂钩,明知道是迷宫题还没想到这一点,只想着去分析,然后不知道怎么判断迷宫的x轴和y轴,在知道迷宫是那一串字符,不知道是怎么分的。

问题一,怎么判断O、o、0、. 它们的方向各是什么

在这里插入图片描述

在这里插入图片描述

还有其他三个函数,分别点进去,则可以得到,四个字符所代表的方向位。

左减右加,上减下加

O左移 o右移 .上移 0下移

问题二,怎么判断出来,迷宫的x轴和y轴

问了工作室的好哥哥,终得以解惑。

在这里插入图片描述

加4的就是 x 轴,不加4 的就是 y 轴。

这个问题也可以在main函数的头部初始化的时候看到。

在这里插入图片描述

所以迷宫的起点就是(0,0)

问题三,迷宫地图是怎么找出来的

sub_400690函数中是a2+a3*8,即a3表示行,a2表示列

a3 通过edx传递

a2 通过esi传递

行×8?再去看这个字符串,发现是64位,正好就是8×8

在这里插入图片描述

*是边界,空格是通路,#号是终点。

在这里插入图片描述

最终得到flag:

nctf{o0oo00O000oooo…OO}
此处flag不知怎么回事,编辑的时候是两个点,显示的时候,非显示三个点,删一个点,就变成一个点了,正确flag是中间两个点,此处显示问题。

5、总结

这个题,至此就做完了,通过BUUCTF 不一样的flag 让我一下就知道了那一串字符串是迷宫,但是还是无从下手,题目中,增加了x轴和y轴,已经四个字符,但是没有告诉上下左右,需要自己去判断,题目难度在于x轴,y轴是怎么判断的,好像是一种固定的形式,+4为x轴,不+为y轴,目前只能如此判别了。通过这个题目,对于迷宫类的题目,又是多了几分感觉,下次再碰到迷宫题的时候,不会特别迷茫了。同时,这个题的分析,与其他人的分析,有所差异,别人分析,能得出题目信息,自己分析则是按着伪代码一步一步的分析,不能进行很好的联动,这是甚有不足的。

继续努力!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值