老规矩丢进IDA F5
将 F5 的代码分析如下
用伪码简单说说
map
=
...
table
input_
row_input()
for
i
in
range
(
len
(input_)
-
1
):
index
table.indexof(
input
[i])
step1
5
(index
+
i)
%
6
step2
/
run(step1)
run(step2)
:
if
0
print
'GG'
)
exit(
'you win!'
run的规则是
要走的地方不能是墙 x和y分别都不能越界 走了一步以后把当前位置标记为墙
要走的地方不能是墙 x和y分别都不能越界
走了一步以后把当前位置标记为墙
step对应的路
1// 右移4// 左移2// 若y为奇数 则直下 若y为偶数 则往右下走3// 若y为奇数 则往左下走 若y为偶数 则直下5// 若y为奇数 则往左上走 若y为偶数 则直上0// 若y为奇数 则直上 若y为偶数 则往右上走
与常规迷宫不同的是满足特定条件可以往斜着走
其实可以看出来这个题就是我们 qq 里面经常玩的一笔画
路径就是这样
转换成step就是
1234321234321101210050543450501210121234322321
step 就可以转换成 index 再转换成 table 中的字符 即 flag 了
#include<stdio.h>
char table[]
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
;
int
main()
{
char path[]
"1234321234321101210050543450501210121234322321"
; path[i]; i
2
path[i]
'0'
path[i
]
j
; j <
36
j)
(step1
(i
&& step2
printf(
"%c"
, table[j]);
}
GJ0V4LA4VKEVQZSVCNGJ00N
验证成功
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法