BabyMaze

本地路径::*********\re\Maze.exe

看到Maze就知道这是一道迷宫题,先运行一下,发现输完一闪而过,在终端打开:

偶的天,日文,不管三七二十一,先拖进ida看看字符串:


果然还是日文,翻译一波,回来明白了:本当に 本当に よかった’,0Ah,0是正确的意思。其他不重要了!

跟进函数看一下:

可以看到flag形式:xman{xxxxxxxxxxxxxxxx},首先先判断了一波v5和v4,不等直接就错误退出,所以v5和v4一定相等才正常,下面的判断v4数组最后一位是不是“}”,不是也退出,格式正确之后进入sub_4015F3(&v4[5])函数,这里的v4[5]就代表在xman{后面的数据(此时v5的数据已经给了v4的前4位),进去看一下:


这个函数里面是定义“上下左右”代表的数值的,以及大数组的值,还有数组排列方式,在这里是9列,6行,如果(a1 + 9 * a2 + a3) == 32(0x20),返回1,与1异或之后为0,不满足条件就执行 if ( v24 != 5 || v23 != 7 ),可知迷宫的出口点就在(5,7),这个地方,又判断了是否走够16步,之后会显示成功,一维数组具体的值为:

0x20和0x05组成,定义的时候有int有char型的,所以在取int型数据的时候,要从右往左取一个字节一个字节的取。

现在知道数组是9列6行,且数据也有了,我们就开始摆迷宫(用二维数组的方式画出来):

1代表数据中的0x20,0代表0x05:

所以我们就可以画出路径(按1的走):

对应“上下左右”上:3 ,下:4,左:1,右:2

得到路径:4444422332244222
最后flag:xman{4444422332244222}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值