CTF WriteUp:多层 Base 编码嵌套解密
📅 2026/7/9 3:25:19
👁️ 阅读次数
📝 编程学习
一、题目信息
- 题型:多层 Base 嵌套编码
- 加密流程:明文 → Base16 编码 → Base32 编码 → Base64 编码 → 密文
- 题目密文:
JTY3OTY0NTY5NDY3OTY2NDY1NDY0 - 解题要求:逆序逐层解码,还原原始明文并提取 flag
二、解题思路
多层编码解密核心逻辑:编码顺序由内向外,解密必须从最外层向内逐层拆解。 本题编码顺序:Base16 → Base32 → Base64 对应解密顺序:密文先 Base64 解码 → Base32 解码 → Base16(Hex)解码 → 原始明文
三、分步手动解码实操
步骤 1:第一层 Base64 解码
密文:JTY3OTY0NTY5NDY3OTY2NDY1NDY0Base64 解码结果:563864565463862461460
步骤 2:第二层 Base32 解码
将上一步输出字符串作为 Base32 输入进行解码,得到十六进制字符串:353633383634
步骤 3:第三层 Base16(十六进制)转 ASCII
十六进制字符与 ASCII 对应关系: 0x35 → 5 0x36 → 6 0x33 → 3 0x38 → 8 0x36 → 6 0x34 → 4
拼接所有转换字符,最终明文:563864
步骤 4、提取 Flag
标准 CTF 格式 flag:flag{563864}
四、工具快速解密(CyberChef)
比赛场景使用 CyberChef 流水线一键解码,操作流程:
- 输入框粘贴密文
JTY3OTY0NTY0NTY5NDY3OTY2NDY1NDY0 - 按解密顺序依次添加算子:
- From Base64
- From Base32
- From Hex
- 输出窗口直接得到最终明文,省去多层手动转换操作,避免人为计算错误。
五、自动化 Python 解密脚本
python
运行
import base64 def multi_base_decode(cipher): # 第一层 Base64 b64_dec = base64.b64decode(cipher) # 第二层 Base32 b32_dec = base64.b32decode(b64_dec) # 第三层 Hex转字符串 plain = bytes.fromhex(b32_dec.decode()).decode() return plain # 执行解密 cipher_text = "JTY3OTY0NTY5NDY3OTY2NDY1NDY0" result = multi_base_decode(cipher_text) print(f"解密得到flag: flag{{{result}}}")六、总结与知识点复盘
- Base 类编码嵌套题通用技巧:解密顺序与编码顺序完全相反,外层先解;
- 区分三种 Base 编码字符集特征,快速判断编码类型:
- Base64:大小写字母 + 数字 +/=
- Base32:仅大写字母 + 数字 2-7
- Base16:0-9、A-F 十六进制字符;
- 多层解码推荐使用 CyberChef 串联算子,流水线处理多层编码效率极高;
- 底层原理:Base 编码本质是二进制转可视字符,多层嵌套仅为多层二进制映射,逆向逐层还原即可。
编程学习
技术分享
实战经验