首页 > 其他分享 >[ACTF新生赛2020]Oruga

[ACTF新生赛2020]Oruga

时间:2022-12-08 16:47:22浏览次数:41  
标签:函数 16 2020 迷宫 v2 v4 如果 Oruga ACTF

前言:争取寒假养成一天一篇的博客的习惯

ELF64,无壳,丢ida继续分析

找到了main函数,是一道输入型的题目

可以看到main函数只有一个关键的函数sub_78A,同时也把我们输入的s字符串传入了进去.

继续跟进

可以看到一开始是有WEMJ的四种情况,有点类似迷宫,但是不确定,但我们可以通过每次索引的字符来判断是否为迷宫

如果是W,则v4 == 16,

如果是E,则v4==1,

如果是M,则v4==16,

如果是J,则v4=-1

而在第二个循环可以看到最后v2+=4的,而数组里的值是通过v2进行寻值的

所以根据迷宫题,上下左右的原则,v4=1,肯定就是往右边移动1格,v4=-1,肯定就是往左边移动1格,如果是往上走的话,是v4=-16,也就是上下二个数据相差0x10,同理往下走,就算v4=16.

这是第一个循环告诉我们的意思,而第二个循环是干什么的呢?

既然我们知道了1,-1,16,-16分别代表左,右,下,上。

那么条件(v2 & 0xF) ==0 就代表如果当前位置在第一列,那么不能往左边走;

条件v2%16 == 15则代表如果当前位置在第十六列,那么就不能往右边走

条件v2-240 <= 0xF 代表如果当前位置在最后一行,那么不能往下走

条件v2+15 <=0x1E 代表如果当前位置在第一行,那么不能往上走

所以如果不满足任何以上任意一个条件,就返回0LL

然后我们用python脚本把地图大致搞出来

初始点是0,终点是!,这里终点是!的原因是因为,这里的关键函数代码不能超过33,33刚好就是字符"!"

同时我们这里碰到障碍物,也要往别的方向走,结合上述规则。

迷宫的路线如下

flag{MEWEMEWJMEWJM}

 

标签:函数,16,2020,迷宫,v2,v4,如果,Oruga,ACTF
From: https://www.cnblogs.com/qsons/p/16966497.html

相关文章