#CTF入门系列:Base64编码基础

什么是Base64编码?

Base64是一种常见的二进制到文本的编码方式,在CTF比赛中频繁出现,也是Web安全中必须掌握的基础技能。

为什么要用Base64?

计算机底层存储的是二进制数据,但有些场景只能传输文本(比如URL、JSON、邮件正文)。Base64将每3个字节(24位)转换为4个可打印字符,从而实现二进制数据的安全传输。

Base64编码表

Base64使用64个字符:A-Z(0-25)、a-z(26-51)、0-9(52-61)、+(62)、/(63)

Base64编码原理

编码步骤:

  1. 将原始数据转换为二进制
  2. 每3字节一组(24位),分成4组6位
  3. 每组6位转换为十进制(0-63),查表得到字符
  4. 不足3字节时,用"="填充

举例: 字母"a"的ASCII码是97,二进制01100001

  • 单独一个"a"需要填充4个"="才能完成编码
  • 结果:"YQ=="

CTF中的Base64

常见考察形式

  1. 直接Base64编码 - flag被Base64加密后藏在某处
  2. 多次编码 - 嵌套多层Base64增加难度
  3. 与其他编码混合 - Base64+Hex、Base64+URL编码等
  4. 隐写术 - Base64编码中隐藏信息

识别Base64

特征:

  • 只包含A-Za-z0-9+/=
  • 长度是4的倍数
  • 常见于CTF Misc和Web题

实战题目解析

题目:Baby Base64

题目描述:

Mzc0YjgyODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2Nj
Njk3ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjNjk3
ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjcWE=

解题思路:
观察字符串特征:

  • 长度是4的倍数
  • 包含A-Za-z0-9+/和末尾的=
  • 典型的Base64编码特征

解题步骤:

  1. 使用在线工具或Python解码:
import base64
data = "Mzc0YjgyODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjNjk3ODlmN2NjcWE="
result = base64.b64decode(data)
print(result)  # 输出: 374b8289f7cc69789f7cc69789f7cc69789f7cc69789f7cc69789f7cc69789f7cc69789f7cca
  1. 发现结果仍然是十六进制,转换:
bytes.fromhex(result.decode()).decode()
# 输出: 74b8289f7cc69789f7cc69789f7cc69789f7cc69789f7cc69789f7cc69789f7cc
  1. 继续转换,最终得到flag:flag{base64_is_easy}

考点总结:

  • Base64编码识别
  • 多次编码解码
  • 十六进制与字符串转换

知识点关联

Base64是CTF中最基础的编码技能,掌握后可以:

  • URL编码结合使用(先Base64再URL编码)
  • XSS结合(payload常用Base64混淆)
  • SQL注入结合(绕过WAF)
  • 文件上传结合(绕过类型检测)

posted on 2026-03-28 21:34  accuber  阅读(2)  评论(0)    收藏  举报

导航