题目打开
标准的ollvm混肴,用脚本两次去除
得到正常的程序
初步分析是以为多项式相加,疏忽了v17以及前面一大段数据的初始化。想着用z3硬解失败了。
主要逻辑为读取输入,判断是否为数字,然后转换成四进制,走迷宫。
前面的一大段加密是初始化迷宫地图v17,我们可以动调得到一个16*28的迷宫:(做题多尝试
1 | 1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0, |
下面看一下 sub_400670 函数 ,结合动调,是十进制转四进制算法。
下面就是迷宫出走方式
得到两条路径,根据函数判断路径长度是45,所以是上面那条
232222322330030000303322223333333222233333333
232222322330030000303322222222222333333300033333333
然后四进制转十进制得到flag
1 | def anyToDecimal(num,n): |
flag{902741462666576198076399615}