ereere WP

ereere WP

先【shift】 + F12 、【ctrl】 + F 查找敏感词”flag“:

image-20250516222410530

直接定位第一个输入flag里:

image-20250516222538911

可以看到这个字符串出现在 sub_400BC8这个函数里,找过去【F5】反编译:

image-20250516222656349

看第15行的字符串特征,易猜出flag 与 base64 有很大关系,那就先Findcrtpt插件看看能不能识别出特征:

image-20250516222922087

但可惜,没有任何识别到,说明可能是自定义的base64表,只能一步一步看了。

先看sub_41A6E0:

image-20250516223429740

没看出什么特征,看不懂先跳过

接着看sub_4009DC:

image-20250516223552759
)

步近sub_400864:

image-20250516223940919

很容易看出这个函数做的操作就是RC4算法的过程(初始化256的S盒、通过密钥打乱S盒)

流密钥 key :flag{123321321123badbeef012}

所以在外层的sub_4009DC函数做的就是RC4加密的过程。

然后看sub_400550:

image-20250516224309217

image-20250516224326663

这里的特征更好辨认,这就是一个自定义表的base64编码

自定义的表为:ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz/+9876543210

最后看这里:

image-20250516224510551

很容易就能猜到这是一个比较函数。

总结:

所以这题就是用用户输入的str 先做key = flag{123321321123badbeef012}的RC4加密,再做自定义表为ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz/+9876543210的base64编码,最后和ScDZC1cNDZaxnh/2eW1UdqaCiJ0ijRIExlvVEgP43rpxoxbYePBhpwHDPJ==进行比较。

要想得到 flag也只需要对ScDZC1cNDZaxnh/2eW1UdqaCiJ0ijRIExlvVEgP43rpxoxbYePBhpwHDPJ==先进行自定义的base64解码,再进行key = flag{123321321123badbeef012}的RC4解密即可。

import base64
from Crypto.Cipher import ARC4

cipher = "ScDZC1cNDZaxnh/2eW1UdqaCiJ0ijRIExlvVEgP43rpxoxbYePBhpwHDPJ=="
base_table = "ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz/+9876543210"
# 标准Base64字符表
standard_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
key = b"flag{123321321123badbeef012}"
#tcipher = cipher.decode('utf-8')

print(ARC4.new(key).decrypt(base64.b64decode(cipher.translate(str.maketrans(base_table,standard_table)))))

posted @ 2025-05-16 23:26  phen  阅读(6)  评论(0)    收藏  举报