CTF WriteUp:多层 Base 编码嵌套解密

📅 2026/7/9 3:25:19 👁️ 阅读次数 📝 编程学习
CTF WriteUp:多层 Base 编码嵌套解密

一、题目信息

  1. 题型:多层 Base 嵌套编码
  2. 加密流程:明文 → Base16 编码 → Base32 编码 → Base64 编码 → 密文
  3. 题目密文:JTY3OTY0NTY5NDY3OTY2NDY1NDY0
  4. 解题要求:逆序逐层解码,还原原始明文并提取 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 流水线一键解码,操作流程:

  1. 输入框粘贴密文JTY3OTY0NTY0NTY5NDY3OTY2NDY1NDY0
  2. 按解密顺序依次添加算子:
    • From Base64
    • From Base32
    • From Hex
  3. 输出窗口直接得到最终明文,省去多层手动转换操作,避免人为计算错误。

五、自动化 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}}}")

六、总结与知识点复盘

  1. Base 类编码嵌套题通用技巧:解密顺序与编码顺序完全相反,外层先解;
  2. 区分三种 Base 编码字符集特征,快速判断编码类型:
    • Base64:大小写字母 + 数字 +/=
    • Base32:仅大写字母 + 数字 2-7
    • Base16:0-9、A-F 十六进制字符;
  3. 多层解码推荐使用 CyberChef 串联算子,流水线处理多层编码效率极高;
  4. 底层原理:Base 编码本质是二进制转可视字符,多层嵌套仅为多层二进制映射,逆向逐层还原即可。