2020华南师大CTF新生赛maze
2020华南师大CTF新生赛maze
分析
首先查壳
发现这是没有壳32位的,然后把它方如ida去分析
很容易知道这个是找最短路径的迷宫,于是我们去CreateMap()这个函数去看看这个迷宫是怎样的
我一开始不知道v2&1然后再v2>>=1是干嘛的,然后去问了一下一个CAS的朋友,才知道这个v2&1是奇数就是它本身,如果不是奇数就是0。这个v2>>=1是除2,向下取整数的意思,判断这个位置是不是1。这里大致就是将num的元素都转换位2进制的意思
那么下一步就是找到所有的v2然后将其转换成16*16的表,这里就直接IDA动态调试,在这里for循环这里下一个断点,然后去看值
这是第一个的v2,每到一次这里
就是一个新的v2的值(停在v1=1的时候,才会出现新v2)后将其转化成表格
a=[0xffff,0x83F7,0xBBF7,0xBB17,0xBB57,0xB857,0xBF57,0xBF17,0xBFB7,0xBFB7,0x8611,0xF7B5,0xF7B5,0x7B4,0xFF87,0xFFFF] |
原本迷宫倒数第三行的0x7B4为
然后根据二进制,填充一下得到下图
那么得到迷宫
然后去check函数找找有没有操作的规则
由v6和v7的初始值,以及增减容易得出
有四个方向k,h,j,l
v6控制行,v7控制列
l为右移一个
h左移一个
k上移一个
j下移一个
解决方法
最后去走迷宫
然后得到
flag{llllkkkhhhkkkkkkkkklllljjjjllljjljjjjjjjlllkkkklljjjl} |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 逆向上分之路!
评论