CFT笔记3-文件基础

一、常见文件格式

1 图像图片类

格式头部魔法数字核心特性 & CTF 考点配套工具
JPG/JPEGFF D8 FF(头)FF D9(尾)支持 EXIF GPS 定位;微信传输清空元数据;可 steghide 隐写;尾部可拼接压缩包exiftool、steghide、binwalk
PNG89 50 4E 47 0D 0A 1A 0A无原生 EXIF;LSB 隐写、调色板、图片宽高篡改zsteg、StegSolve、pngcheck
GIF47 46 38多帧动图分帧藏线索、调色板隐写ffmpeg、StegSolve
BMP42 4D无压缩位图,LSB 隐写效果极佳zsteg
HEIC/RAW厂商专属魔数完整保留 GPS 拍摄信息,定位题原图exiftool
ICO分段图像签名内置多尺寸子图标,binwalk 分离内嵌图片binwalk

2 压缩归档类

格式头部魔法数字核心特性 & CTF 考点
ZIP50 4B 03 04(本地文件)50 4B 01 02(中央目录)50 4B 05 06(EOCD 结束)存在伪加密、注释藏 flag、图包拼接、明文攻击、CRC 碰撞;分三层独立结构
RAR452 61 72 21 1A 07分块式结构,支持头部全局加密、分卷压缩,无伪加密机制
7Z37 7A BC AF 27 1CAES 高强度加密,常规爆破几乎无解
GZ/TGZ1F 8BLinux 日志、固件配套压缩包
TAR无统一头部魔数纯归档不压缩,常搭配 gz 使用
ZST28 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 程序 / 固件 / 镜像

  1. ELF Linux 程序:7F 45 4C 46,strings 提取内置字符串
  2. EXE Windows 程序:4D 5A,资源段隐藏图片 / 文本
  3. BIN 固件:无固定魔数,binwalk -Me自动分离文件系统
  4. DMP 内存镜像:内存转储,Volatility3 取证工具分析进程、明文密码
  5. DD 磁盘镜像:完整分区镜像,test 恢复删除文件

6 流量 & 文本脚本

  1. pcap/pcapng 抓包:Wireshark 解析,HTTP 文件传输、USB 键盘流量、隧道隐写
  2. txt/log 纯文本:各类编码密文、密钥、日志线索
  3. py/js/php 源码:注释隐藏 flag、JSFuck 混淆
  4. csv/json:结构化批量存储坐标、手机号、域名信息

补充

文件魔数完整维基参考:https://en.wikipedia.org/wiki/List_of_file_signatures

二、魔法数字(Magic Number)详解

1 基础定义

魔法数字(简称魔数)是文件头部固定十六进制字节签名,程序依靠魔数判断真实文件格式,和文件后缀无关。 核心要点:

  1. 存储位置:文件最开头若干字节;
  2. 核心作用:识破后缀欺骗、识别拼接嵌套文件;
  3. 本质:厂商规定的二进制标识;
  4. CTF 高频陷阱:题目修改后缀混淆选手,必须通过魔数判断真实类型。

2 两种魔数展示形式

  1. 十六进制原始字节(010/HxD 编辑器) 例 PNG:89 50 4E 47 0D 0A 1A 0A
  2. ASCII 可读字符 ZIP 50 4B = PK;ELF 7F 45 4C 46 = \x7FELF

3 CTF 魔数常见考点

  1. 后缀篡改 例文件名为flag.jpg,头部魔数50 4B,真实是 ZIP 压缩包;
  2. 文件拼接嵌套(图包) JPG 头部FF D8 FF,文件尾部追加 ZIP 二进制,使用binwalk -e自动分离;
  3. 人为篡改魔数 题目手动删除 / 修改头部字节,file命令识别失败,使用十六进制编辑器检索魔数字符串修复;
  4. 无后缀.bin 文件 无文件名提示,仅能依靠头部魔数判断固件、图片、压缩包。

三、ZIP 文件完整结构

ZIP 全部字节采用小端序存储,整体分为三大独立区块,顺序固定: 本地文件记录 → 全部中央目录条目 → EOCD结束标记

区块 1:本地文件头 Local File Header 魔数50 4B 03 04

每个压缩文件单独配套头部,关键字段:

偏移字节字段CTF 重点说明
0x004签名50 4B 03 04
0x062通用标记位bit0=1 代表加密;偶数无加密、奇数加密
0x0E4CRC32CRC 碰撞题核心取值
0x1A2文件名字节长度后续读取文件名称

补充:标记位 bit3 开启时,文件末尾存在 Data Descriptor 附加校验块。

区块 2:中央目录记录 Central Directory 魔数50 4B 01 02

解压软件优先读取此区域,伪加密唯一修改位置

偏移字节关键字段
0x004签名50 4B 01 02
0x082通用标记位

伪加密原理区分

  1. 真加密:本地头 + 目录头标记位均为奇数(01 00),文件数据流加密,必须爆破密码;
  2. 伪加密:本地头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 06EOCD 结束块文件末尾全局注释存放

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 字节)

偏移长度字段考点
0x002HEAD_CRC当前块 CRC 校验
0x021HeadType区分块类型
0x031HEAD_FLAGS加密、分卷、注释开关
0x042HeaderSize当前块总头部长度
0x064ADD_SIZE(可选)压缩数据长度

RAR4 四大标准块

  1. Marker 标记块 HeadType=0x73 文件最开头,固定魔数52 61 72 21 1A 07,校验文件合法性;
  2. Archive 归档主块 HeadType=0x74 全局配置,加密核心控制位BLOCK_HEADERS_ENCRYPTED
  • 0:文件名、文件大小明文可见;
  • 1:所有元数据加密,必须输入密码才能查看文件列表;
  1. File 文件块 HeadType=0x7A 每一个文件对应一个块,存储文件名、大小、压缩二进制;
  2. 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 + 配套提取器(万能离线文件爆破)

配套工具:zip2johnrar2johnpdf2johnoffice2john

流程:先提取加密文件哈希 → john 字典爆破

  • bkcrack(ZIP CRC 碰撞 / 明文攻击,特殊爆破)

不需要完整密码,只要知道压缩包内任意一个明文文件,直接算出 ZIP 密钥,CTF 经典 Zip 明文攻击专用工具

  • Ziperello

特别感谢

探姬_Officia

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值