第六篇博客
题目信息
- 比赛:SWPUCTF 2021 新生赛
- 题目:fakebase
- 类型:Reserve(逆向工程)
1. 查壳
将下载好的文件拖入exeinfope中进行查壳,结果无壳
2. 逆向分析
发现是一个python文件,直接点开
3. 解码
代码如下:
s_box = ‘qwertyuiopasdfghjkzxcvb123456# $ ‘
cipher = “u#k4ggia61egegzjuqz12jhfspfkay”
char_to_idx = {c: i for i, c in enumerate(s_box)}
num_low = 0
for c in reversed(cipher):
num_low = num_low * 31 + char_to_idx[c]
for high in range(31):
full_num = num_low + high * (31 ** len(cipher))
binary = bin(full_num)[2:]
if len(binary) % 8 != 0:
binary = '0' * (8 - len(binary) % 8) + binary
try:
flag = ''.join(chr(int(binary[i:i+8], 2)) for i in range(0, len(binary), 8))
if all(32 <= ord(c) <= 126 for c in flag):
print("Flag:", flag)
break
except:
continue
else:
print(“No valid flag found.”)
4. Flag
NSSCTF{WHAt_BASe31}