一、常见文件格式
1 图像图片类
| 格式 | 头部魔法数字 | 核心特性 & CTF 考点 | 配套工具 |
|---|---|---|---|
| JPG/JPEG | FF D8 FF(头)FF D9(尾) | 支持 EXIF GPS 定位;微信传输清空元数据;可 steghide 隐写;尾部可拼接压缩包 | exiftool、steghide、binwalk |
| PNG | 89 50 4E 47 0D 0A 1A 0A | 无原生 EXIF;LSB 隐写、调色板、图片宽高篡改 | zsteg、StegSolve、pngcheck |
| GIF | 47 46 38 | 多帧动图分帧藏线索、调色板隐写 | ffmpeg、StegSolve |
| BMP | 42 4D | 无压缩位图,LSB 隐写效果极佳 | zsteg |
| HEIC/RAW | 厂商专属魔数 | 完整保留 GPS 拍摄信息,定位题原图 | exiftool |
| ICO | 分段图像签名 | 内置多尺寸子图标,binwalk 分离内嵌图片 | binwalk |
2 压缩归档类
| 格式 | 头部魔法数字 | 核心特性 & CTF 考点 |
|---|---|---|
| ZIP | 50 4B 03 04(本地文件)50 4B 01 02(中央目录)50 4B 05 06(EOCD 结束) | 存在伪加密、注释藏 flag、图包拼接、明文攻击、CRC 碰撞;分三层独立结构 |
| RAR4 | 52 61 72 21 1A 07 | 分块式结构,支持头部全局加密、分卷压缩,无伪加密机制 |
| 7Z | 37 7A BC AF 27 1C | AES 高强度加密,常规爆破几乎无解 |
| GZ/TGZ | 1F 8B | Linux 日志、固件配套压缩包 |
| TAR | 无统一头部魔数 | 纯归档不压缩,常搭配 gz 使用 |
| ZST | 28 B5 2F FD | 新型压缩,多用于内存镜像、固件 |
3 办公文档类
- PDF 魔数:
25 50 44 46考点:隐藏图层、页面注释、内嵌图片、JS 恶意脚本、加密 PDF 爆破;工具:pdfid、pdftotext - DOCX/XLSX/PPTX 本质为 ZIP 压缩包,直接改
.zip解压; 关键目录:word/media/内嵌图片、文档注释、隐藏幻灯片存放 flag - DOC(旧二进制 Word) 魔数:
D0 CF 11 E0 A1 B1 1A E1,二进制复合文档,提取难度更高
4 音视频类
音频
- WAV:魔数
52 49 46 46(RIFF),无损音频,频谱摩斯、LSB 隐写;工具 Audacity - MP3:有损压缩,常嵌入 DTMF、摩斯音频波形
视频 MP4/MOV
魔数起始段00 00 00 18 66 74 79 70; 考点:ffmpeg 批量抽帧、分离音频轨道、逐帧隐藏二维码
5 程序 / 固件 / 镜像
- ELF Linux 程序:
7F 45 4C 46,strings 提取内置字符串 - EXE Windows 程序:
4D 5A,资源段隐藏图片 / 文本 - BIN 固件:无固定魔数,
binwalk -Me自动分离文件系统 - DMP 内存镜像:内存转储,Volatility3 取证工具分析进程、明文密码
- DD 磁盘镜像:完整分区镜像,test 恢复删除文件
6 流量 & 文本脚本
- pcap/pcapng 抓包:Wireshark 解析,HTTP 文件传输、USB 键盘流量、隧道隐写
- txt/log 纯文本:各类编码密文、密钥、日志线索
- py/js/php 源码:注释隐藏 flag、JSFuck 混淆
- csv/json:结构化批量存储坐标、手机号、域名信息
补充
文件魔数完整维基参考:https://en.wikipedia.org/wiki/List_of_file_signatures
二、魔法数字(Magic Number)详解
1 基础定义
魔法数字(简称魔数)是文件头部固定十六进制字节签名,程序依靠魔数判断真实文件格式,和文件后缀无关。 核心要点:
- 存储位置:文件最开头若干字节;
- 核心作用:识破后缀欺骗、识别拼接嵌套文件;
- 本质:厂商规定的二进制标识;
- CTF 高频陷阱:题目修改后缀混淆选手,必须通过魔数判断真实类型。
2 两种魔数展示形式
- 十六进制原始字节(010/HxD 编辑器) 例 PNG:
89 50 4E 47 0D 0A 1A 0A - ASCII 可读字符 ZIP
50 4B=PK;ELF7F 45 4C 46=\x7FELF
3 CTF 魔数常见考点
- 后缀篡改 例文件名为
flag.jpg,头部魔数50 4B,真实是 ZIP 压缩包; - 文件拼接嵌套(图包) JPG 头部
FF D8 FF,文件尾部追加 ZIP 二进制,使用binwalk -e自动分离; - 人为篡改魔数 题目手动删除 / 修改头部字节,
file命令识别失败,使用十六进制编辑器检索魔数字符串修复; - 无后缀.bin 文件 无文件名提示,仅能依靠头部魔数判断固件、图片、压缩包。
三、ZIP 文件完整结构
ZIP 全部字节采用小端序存储,整体分为三大独立区块,顺序固定: 本地文件记录 → 全部中央目录条目 → EOCD结束标记
区块 1:本地文件头 Local File Header 魔数50 4B 03 04
每个压缩文件单独配套头部,关键字段:
| 偏移 | 字节 | 字段 | CTF 重点说明 |
|---|---|---|---|
| 0x00 | 4 | 签名 | 50 4B 03 04 |
| 0x06 | 2 | 通用标记位 | bit0=1 代表加密;偶数无加密、奇数加密 |
| 0x0E | 4 | CRC32 | CRC 碰撞题核心取值 |
| 0x1A | 2 | 文件名字节长度 | 后续读取文件名称 |
补充:标记位 bit3 开启时,文件末尾存在 Data Descriptor 附加校验块。
区块 2:中央目录记录 Central Directory 魔数50 4B 01 02
解压软件优先读取此区域,伪加密唯一修改位置
| 偏移 | 字节 | 关键字段 |
|---|---|---|
| 0x00 | 4 | 签名50 4B 01 02 |
| 0x08 | 2 | 通用标记位 |
伪加密原理区分
- 真加密:本地头 + 目录头标记位均为奇数(01 00),文件数据流加密,必须爆破密码;
- 伪加密:本地头
00 00,目录头01 00,文件数据明文,仅标识造假; 修复方案:
- 工具一键:
java -jar ZipCenOp.jar r target.zip - 手动修复:010 编辑器找到所有
50 4B 01 02,将 0x08 位置 2 字节改为00 00
区块 3:EOCD 目录结束标记 魔数50 4B 05 06
位于文件最末尾,支持全局注释隐藏 flag
| 偏移 | 字段作用 |
|---|---|
| 0x0C | 中央目录总字节大小 |
| 0x10 | 中央起始偏移地址 |
| 0x14 | 全局注释长度 |
ZIP 三类魔数速查表
| 十六进制魔数 | 对应区块 | 核心用途 |
|---|---|---|
50 4B 03 04 | 本地文件头 | 每个压缩文件头部 |
50 4B 01 02 | 中央目录条目 | 伪加密修改标记位 |
50 4B 05 06 | EOCD 结束块 | 文件末尾全局注释存放 |
ZIP 样例解析

- 灰色本地块:偏移 0000h,魔数
50 4B 03 04,标记位00 00,文件名HelloCTF.txt,明文内容Hello CTF; - 粉色中央目录块:偏移 0030h,魔数
50 4B 01 02,标记位00 00,无伪加密; - 黄色 EOCD 块:偏移 006Ch,文件仅 1 个文件,注释长度 0,无隐藏字符串。
四、RAR4 文件结构
RAR 采用连续独立分块架构,无 ZIP“数据在前、索引在后” 设计;RAR5 魔数52 61 72 21 1A 08,本文仅讲解出题最多 RAR4(魔数52 61 72 21 1A 07)。
所有块通用头部模板(固定前 7 字节)
| 偏移 | 长度 | 字段 | 考点 |
|---|---|---|---|
| 0x00 | 2 | HEAD_CRC | 当前块 CRC 校验 |
| 0x02 | 1 | HeadType | 区分块类型 |
| 0x03 | 1 | HEAD_FLAGS | 加密、分卷、注释开关 |
| 0x04 | 2 | HeaderSize | 当前块总头部长度 |
| 0x06 | 4 | ADD_SIZE(可选) | 压缩数据长度 |
RAR4 四大标准块
- Marker 标记块 HeadType=0x73 文件最开头,固定魔数
52 61 72 21 1A 07,校验文件合法性; - Archive 归档主块 HeadType=0x74 全局配置,加密核心控制位
BLOCK_HEADERS_ENCRYPTED:
- 0:文件名、文件大小明文可见;
- 1:所有元数据加密,必须输入密码才能查看文件列表;
- File 文件块 HeadType=0x7A 每一个文件对应一个块,存储文件名、大小、压缩二进制;
- End 结束块 HeadType=0x7B 文件末尾终止标识,无附加数据。
RAR 完整文件顺序
Marker 标记块 → Archive 归档主块 → File 文件块 → End 结束块
RAR样例

五、相关工具
-
fcrackzip(Linux Kali,ZIP 专用)
适用:老式 ZipCrypto 加密 ZIP,不支持 AES 加密 zip
优势:轻量、速度快,支持字典 / 纯数字 / 掩码穷举
-
ARCHPR(Windows 图形化,ZIP/RAR/7Z 全能)
支持字典、掩码、纯暴力三种模式;RAR4/RAR5、加密 7Z 均可破解
CTF Windows 环境首选,可视化选择密码长度、字符范围
-
rarcrack(Linux,RAR/7Z/ZIP 通用)
自动识别压缩包类型,多线程穷举
-
John the Ripper + 配套提取器(万能离线文件爆破)
配套工具:zip2john、rar2john、pdf2john、office2john
流程:先提取加密文件哈希 → john 字典爆破
-
bkcrack(ZIP CRC 碰撞 / 明文攻击,特殊爆破)
不需要完整密码,只要知道压缩包内任意一个明文文件,直接算出 ZIP 密钥,CTF 经典 Zip 明文攻击专用工具
-
Ziperello
特别感谢
探姬_Officia

5967

被折叠的 条评论
为什么被折叠?



