题目:
import base64 from string import * str1 = 'yD9oB3Inv3YAB19YynIuJnUaAGB0um0=' string1 = 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba0123456789+/' string2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' flag = input('welcome to moectf\ninput your flag and I wiil check it:') enc_flag = base64.b64encode(flag.encode()).decode() enc_flag = enc_flag.translate(str.maketrans(string2, string1)) # str.maketrans(string2, string1) 返回一个转换表,该表将 string2 中的字符映射为 string1 中对应的字符。如果 string2 中的某个字符在 string1 中没有对应的字符,则会被忽略。 # enc_flag.translate() 函数使用上述转换表对字符串 enc_flag 进行字符映射替换操作,并返回替换后的结果 if enc_flag == str1: print('good job!!!!') else: print('something wrong???') print(enc_flag) exit(0)
解题脚本:
from string import * import base64 str1 = 'yD9oB3Inv3YAB19YynIuJnUaAGB0um0=' string1 = 'ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba0123456789+/' string2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' string3 = '' for i in str1: for j in range(len(string1)): if string1[j] == i: string3 += string2[j] string4 = string3 + '==' print(string4) string4 = base64.b64decode(string4) # enc_flag = base64.b64encode(flag.encode()).decode() # flag.encode() 将字符串 flag 转换为字节串(byte string)。 # base64.b64encode() 函数对字节串进行 Base64 编码,返回一个字节串。 # .decode() 将编码后的字节串转换为字符串。 print(string4)
题目比较简单,就是涉及到的几个函数我没见过,还是属于替换密码,但是这个是把明文先转换成base64编码后进行替换,然后又解码,所以要做的就是先编码,再根据替换表爆破处替换前的编码,再进行base64解码就得到了flag,刚开始写脚本,我查询后标注在了代码旁边
标签:enc,base64,flag,简单,print,string2,string1 From: https://www.cnblogs.com/lcjingyi/p/17825153.html