re新手maze题

这是一道迷宫题,点开看需要我们输入正确的route。

老办法,拖入IDA(注意,是32位,虽然64位也可以打开,但是反编译不了)看一下。

在一个很不显眼的地方(很容易忽略)隐藏了一张地图!没错,就是setmap!这是我们的地图。

打开看一下,

然后回到主函数,v5是我们输入的路线。

然后继续读下去,有一个if语句,如果两个字符串相等,就输出“你想得倒美……”点进surprise看,发现是一个假flag(挺会玩的)。。。

接着阅读主函数,v7=check(v5[i])因为是跟我们输入的路线有关,所以点进去看看check函数。

又有一个change函数把我们传进来的v5改变了。进去看一下,发现是和6异或再加上8。

再往下看if函数,发现经过加密后会出现四个字符“i,y,v,z”,我们先可以写个程序把加密前的字符跑出来,得到的结果是“gwht”。

现在好像没有什么思路,回主函数看一下,v6=map(v7),也就是把v7放入地图中走,又因为v7是check函数处理完之后的v5(即我们输入的路线)。

这时候,我们回过头看一下刚刚check函数中每一个if语句里面的内容,发现都是对start作出处理,不妨猜测一下,-=31应该是往上走,start+=31应该是往下走,那么--start和++start分别是向左向右走了。

然后我们可以依据每行31位字符对我们的地图进行处理,得到正确的地图。

然后再根据我们之前得到的上下左右来走这个地图。通过if语句里面V6==49(即v6=“1”时),会输出“byebye”,所以我们不能走有数字1的地方。

从s开始,先是往左走,也就是输入"v"12次,再是往下走,也就是输入"y"12次,同理,输入"z"12次,输入"i"5次,输入"v"12次。

又由于我们已经把iyvz解密出来是gwht综上,我们得到的flag是:hhhhhhhhhhhhwwwwwwwwwwwwttttttttttttggggghhhhhhhhhhhh。

猜你喜欢

转载自www.cnblogs.com/zjxtt/p/10544744.html