[HUBUCTF 2022 新生赛]simple_RE

发布时间 2023-05-09 22:04:01作者: TFOREVERY

查壳:

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))))

得到NSSCTF{a8d4347722800e72e34e1aba3fe914ae}