Reverse7 移动迷宫
Value: 200
Description: 当赶到的时候发现对方已经提前接头了,但在现场遗留了一个 U 盘并恢复出了一个登陆程序,如何才能拿到密钥?
题目为走迷宫的形式。IDA中F5查看伪代码,程序先将输入的字符串通过locate函数进行变换。
locate函数将输入字符串str的字符与二维数组table中的字符进行匹配,并返回各字符在数组中所在的列号(1,2,3,4),这些整数代表移动方向:1—>up;2–>down;3–>left;4–>right。
具体移动的逻辑实现如下:根据locate返回的整数序列移动横纵坐标。二维数组route中的字符代表路径:“#”代表通路,“*”代表障碍物,初始位置为(3,0),终点为(9,8)。
根据以上分析,step数组的值应为4114 4422 3222 4414 4442 2223才能走到终点,映射到table数组中的字符为Ba47F1A256E0B347F1B2C6Ef,所以最终的flag是flag_Xd{hSh_ctf:Ba47F1A256E0B347F1B2C6Ef}。
Misc1 Try Everything
Value:200
Description:
try everything you can to get flag, and DO NOT ASK MANAGER THE FLAG.
解压文件打开能看到一串乱序字符串,其中包含组成flag的“{”“}”等字符。
用binwalk查看可知,file文件由文件名为0~163的164个小文件组成。
重新排序即得到flag。
# binwalk file.gz | awk -F '"' '{print $2}'
offset=[24,72,108,129,18,92,63,162,110,156,132,101,34,143,28,136,115,114,17,14,69,10,7,11,127,55,58,86,149,21,41,120,142,6,22,36,37,88,133,161,35,137,31,3,20,113,46,42,91,78,102,19,135,153,105,48,107,9,68,64,81,93,147,67,138,160,85,106,154,75,89,66,26,141,2,98,96,124,145,84,71,15,140,90,144,100,61,131,27,23,53,40,130,47,117,148,150,50,111,122,146,57,121,123,82,45,152,109,62,70,116,77,12,139,155,80,103,13,74,16,51,94,87,97,25,151,128,54,125,112,119,118,158,99,95,4,38,79,157,29,33,134,30,126,1,104,52,65,44,83,73,163,0,76,5,60,59,159,8,49,32,43,56,39]
s="a o pcrcr6yteSoahTos ehaek,a:rcsht on:@dgace.no aipl9 cr eepotr_b pFveoe{niur_deddwhahe hn kisf4taocy utuagewi vX1ooearim nvEw mi Acmeudbbnftninofmeh}Se t 8eaimer"
result = ''.join([s[offset.index(x)] for x in range(len(s))])
print result