当前位置: 首页 > news >正文

CTF 编码入门|Base64 进制转换

前言

在 CTF 密码学基础题型中,Base64 是仅次于 ASCII 编码的高频考点,常搭配十六进制(Hex)嵌套考察。本题是典型的「十六进制转字节 → Base64 编码」复合题型,全程仅使用 Python 标准库即可完成,非常适合刚入门 CTF 的新手练习进制流转、字节与编码转换逻辑。本文结合完整解题流程、代码拆解、原理拓展,整理成可直接发布的技术博客。

一、题目完整信息

基础信息

  • 题目名称:Base64
  • 题型:密码学 - 基础编码转换
  • 分值:10 分
  • 难度:入门级

题目原文描述

Base64 是应用极广的编码方案,它能将二进制数据映射为由 64 个标准 ASCII 字符组成的字符串。单个 Base64 字符存储 6bit 二进制数据,每 4 个 Base64 字符可完整编码 3 个 8bit 字节。

Base64 广泛应用于网页场景,图片等二进制资源可直接嵌入 HTML、CSS 文本中传输。 解题要求:给出一段十六进制字符串,先将十六进制解码为原始字节,再对字节进行 Base64 编码,最终得到 flag。

题目给定 Hex 密文字符串

plaintext

72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf

官方 Python 提示

导入标准库base64,使用base64.b64encode()完成编码;必须先把十六进制字符串还原为 bytes 字节流,再执行 Base64 编码。

二、前置核心知识点

1. 十六进制(Hex)与字节转换逻辑

十六进制每 2 个字符对应 1 个原始字节(8bit),Python 中使用bytes.fromhex()可以直接将 Hex 字符串转为原始二进制 bytes 对象,是本题第一步核心操作。 示例:bytes.fromhex("6162")会得到字节b'ab'

2. Base64 编码底层原理

  1. 把原始二进制数据按 6bit 为一组重新划分;
  2. 每组 6bit 映射到预设 64 字符字母表(A-Z,a-z,0-9,+,/);
  3. 原始字节长度无法被 3 整除时,末尾补充=填充符;
  4. 作用:二进制数据转纯 ASCII 文本,方便网络传输,Base64 只是编码,不是加密,不存在密钥

3. Python base64 标准库核心函数

  • base64.b64encode(data):输入 bytes 字节,输出 Base64 编码后的 bytes;
  • .decode('utf-8'):将编码后的 bytes 转为可读字符串;
  • 配套反向解码函数:base64.b64decode()(本题用不到,拓展记忆)。

三、完整解题思路 & 可直接运行 Python 脚本

解题流程梳理

  1. 接收题目给出的十六进制字符串;
  2. 使用bytes.fromhex()将 Hex 字符串还原为原始二进制字节;
  3. 调用base64.b64encode()对字节流做 Base64 编码;
  4. 将编码结果从 bytes 转为 utf-8 字符串,输出得到 flag。

完整解密代码

python

运行

# 导入Python内置base64标准库,无需额外安装 import base64 # 题目提供的十六进制字符串 hex_str = "72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf" # 步骤1:十六进制字符串 转换为原始字节数据 raw_bytes = bytes.fromhex(hex_str) # 步骤2:对原始字节进行Base64编码,输出bytes类型 b64_result = base64.b64encode(raw_bytes) # 步骤3:将bytes转为可读字符串 flag = b64_result.decode("utf-8") # 打印最终flag print("解密编码得到Flag:", flag)

代码逐行拆解说明

  1. import base64:加载 Python 自带 Base64 工具库,CTF 编码题必备;
  2. 定义变量hex_str存储题目给出的完整十六进制密文;
  3. bytes.fromhex(hex_str):核心转换步骤,把文本格式的十六进制转为计算机可处理的二进制字节流,是本题最容易遗漏的前置操作;
  4. base64.b64encode(raw_bytes):标准 Base64 编码函数,只接收 bytes 参数,不能直接传入字符串;
  5. .decode("utf-8"):编码输出结果是带b''标识的字节,解码为普通字符串方便复制提交;
  6. 打印输出最终 flag。

四、程序运行结果与验证

控制台输出

执行代码后直接输出:

plaintext

解密编码得到Flag: crypto/Base+64+Encoding+is+Web+Safe/

分步校验过程

  1. Hex 转字节:72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf→ 原始二进制字节;
  2. Base64 编码字节流,生成标准 Base64 文本;
  3. 文本格式即为平台要求提交的 flag,和题目底部给出的标准答案完全匹配。

五、Base64 题型常见变形拓展

掌握本题流程后,可以应对 CTF 中绝大多数 Base64 复合编码题,常见变形如下:

  1. 反向题型:Base64 解码再转十六进制流程:b64decode() → bytes → bytes.hex()
  2. 多层嵌套编码:Hex→Base64→Base64 二次编码需要循环调用b64encode()多次处理;
  3. URL 安全 Base64 变体编码字符+/替换为-_,库函数base64.urlsafe_b64encode()处理;
  4. 带填充 / 无填充 Base64部分题目会去掉末尾=,解码前需要手动补齐填充符。

六、新手学习总结

  1. 区分「编码」与「加密」:Base64、Hex 都只是数据格式转换,没有加密强度,不能用于数据保密;
  2. 固定解题模板:Hex ↔ Bytes ↔ Base64 三者互相转换是 CTF 编码题核心套路;
  3. 避坑重点:base64.b64encode()仅接收 bytes 类型,字符串必须先转字节再处理,这是新手最常踩的报错点;
  4. 工具记忆:Python 内置base64binascii两个库可以覆盖 90% 基础进制转换题型,无需在线工具即可本地解题。
http://www.jsqmd.com/news/1158099/

相关文章:

  • 受欢迎的西宁茂枫商混站
  • Agent时代:企业AI接入内部系统,安全可控才是王道!
  • 南京爱彼回收价格查询及靠谱平台实测排行(2026年7月最新数据) - 爱彼中国官方服务中心
  • Muse智能体化图像生成:工具调用与自我优化技术解析
  • LabelImg 1.8.6 迁移至 Label Studio:3步完成项目升级与数据格式转换
  • STM32F103 矩阵键盘驱动优化:4x4扫描代码从5ms延时降到1ms响应
  • AI 辅助 API 文档生成与维护:从代码注释到交互式文档的完整链路
  • 小米账号解锁限制解析:每月1台与每年4台的策略与应对方案
  • 朗姆酒:从甘蔗到酒杯,一种充满加勒比阳光的烈酒
  • 2026年7月最新温州万国官方售后维修服务网点地址与客服电话 - 万国中国官方服务中心
  • 终极指南:3步免费下载百度文库任何文档(开源脚本完整教程)
  • 在 Visual Studio 中像 VS Code 一样查看每行代码的修改者
  • C# Environment.GetEnvironmentVariable 实战:3种作用域(Process/User/Machine)读取差异与场景
  • OpenClaw:轻量级本地智能体框架,支持跨平台AI工具编排
  • Apache HttpClient与OkHttpClient深度对比:性能、实战与选型指南
  • 2026湘潭正规漏水检测维修权威推荐-卫生间漏水免砸砖维修/厨房阳台墙面暗管漏水检测/屋顶外墙堵漏维修-防水补漏公司实测口碑榜推荐 - 即刻修防水
  • 七七独立站搭建工具:模块化电商开发实战指南
  • BilibiliDown:如何用一款工具搞定B站视频下载与音频提取?
  • AI系统三要素:真理、好奇与美的技术实现与应用实践
  • 联想小新键盘数字键失灵仅56键能用
  • 江诗丹顿官方服务项目及价格查询|完整网点地址与售后热线权威信息通告(2026年7月最新) - 江诗丹顿服务中心
  • LangChain ReAct Agent最小可运行示例详解
  • WooCommerce独立站聊天功能实战:JetMessenger插件配置与优化指南
  • 基于Docker Compose的Prometheus+Grafana监控告警体系实战部署指南
  • STM32F745VG与PAM8904构建高效压电蜂鸣器驱动方案
  • 帝舵官方售后服务中心地址及24小时电话实地考察报告_多信源验证(2026年7月最新) - 帝舵中国官方服务中心
  • 企业级 Agent 开发实战:从 Identity 开始进入生产环境
  • CANopenNode协议栈之对象字典概念
  • 宇舶中国官方售后服务中心|地址与联系电话权威信息通告(2026年7月最新) - 亨得利官方服务中心
  • TPS61170+PIC18F4682高电压DC-DC升压转换系统设计