[HUBUCTF 2022 新生赛]simple_RE
查壳:
64位,进IDA:
看正确输出:
有要比较的两个字符a5mc58bphliax7j和Buf1,可以知道目的字符串是a5mc58bphliax7j,跟进看看:
再看看Buf1,可以看见它是根据我们输入的字符进行sub_401570方法后得到的,那么我们跟进:
熟悉的配方,base64加密格式,看看是否为标码:
很明显,不是,而且不是替换,而是打乱了,那么我们需要做个映射表
总结一下:
对输入的字符串进行非标码的base64加密
与‘5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM/8==’作比较
上脚本:
Str = "qvEJAfHmUYjBac+u8Ph5n9Od17FrICL/X0gVtM4Qk6T2z3wNSsyoebilxWKGZpRD" # 自定义base64码
model = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" # 标准base64码
enc = "5Mc58bPHLiAx7J8ocJIlaVUxaJvMcoYMaoPMaOfg15c475tscHfM/8==" # 目标
print(base64.b64decode(enc.translate(str.maketrans(Str, model))))