简单的base64

发布时间 2023-11-10 21:49:04作者: LC静一

题目:

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,刚开始写脚本,我查询后标注在了代码旁边