[WUSTCTF2020]B@se1
1.题目
密文:MyLkTaP3FaA7KOWjTmKkVjWjVzKjdeNvTnAjoH9iZOIvTeHbvD==
JASGBWcQPRXEFLbCDIlmnHUVKTYZdMovwipatNOefghq56rs****kxyz012789+/
上面一行是原始编码字符串,也就是密文,而下面一行包含base64的所有字符,所以本题应该是base64变表的题目,但是其中有四个字符未知,我们就把这四个字符找到才进行排列组合一共24种组合,最后查看所有结果找到flag即可
2.解题脚本
import base64
import itertools
import string
# 原始编码字符串(非标准 Base64)
str1='MyLkTaP3FaA7KOWjTmKkVjWjVzKjdeNvTnAjoH9iZOIvTeHbvD=='
# 自定义的 Base64 字符集(非标准顺序)
string1='JASGBWcQPRXEFLbCDIlmnHUVKTYZdMovwipatNOefghq56rs****kxyz012789+/'
#标准base64字符集
string2='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
s1='JASGBWcQPRXEFLbCDIlmnHUVKTYZdMovwipatNOefghq56rs'
s2='kxyz012789+/'
#寻找缺失的字符
miss=[]
for i in string2:if i not in string1:miss.append(i)
#排列组合找flag
for i in itertools.permutations(miss,4):s=s1+''.join(i)+s2print(base64.b64decode(str1.translate(str.maketrans(s, string2))))
flag{base64_1s_v3ry_e@sy_and_fuN}