【CTF学习】PWN基础工具的使用(binwalk、foremost、Wireshark、WinHex)
binwalk、foremost、Wireshark、WinHex
环境
操作系统环境:
windows 11
虚拟机:kali-linux-2025.2-vmware-amd64.7z
官网下载地址:
https://www.kali.org/get-kali/
kali虚拟机默认账户密码均为:kali
时间:2025.7.14
PWN工具
binwalk (可分析pcapng格式文件)
binwalk是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具。 具体来说,Binwalk是一个固件的分析工具,旨在协助研究人员对固件非分析,提取及逆向工程用处。简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块,还重要一点的是可以轻松地扩展。
从提供的 binwalk
分析结果中,可以得出以下关键信息:
- 文件类型与隐藏数据
6666.pcapng
是一个网络抓包文件(通常由 Wireshark/tcpdump 生成),但内部隐藏了多个压缩数据段。- 检测到 7 个
xz
压缩数据块(偏移量0xA1E2D
、0xA21ED
等),表明文件可能被分段压缩或包含多层嵌套的压缩数据。 - 末尾存在 1 个加密的 ZIP 文件(偏移量
0x15B561
),其中包含一个名为flag.txt
的文件。
- 加密 ZIP 文件细节
- 文件路径:
flag.txt
(名称暗示可能是目标数据)。 - 加密强度:
- 使用 至少 v2.0 的加密算法(
encrypted at least v2.0
),安全性较高。 - 压缩大小:
52 字节
,原始大小:40 字节
(内容较短,可能是文本或密钥)。
- 使用 至少 v2.0 的加密算法(
- 文件路径:
- 分析线索
- 嵌套结构可能性:
- 前面的
xz
压缩数据可能是解压 ZIP 所需的密码或密钥(例如:密码藏在xz
解压后的文本中)。 - 也可能是分阶段隐藏数据(如:逐层解压
xz
后获得 ZIP 的密码)。
- 前面的
- 攻击方向:
- 提取并解压
xz
段:
检查解压内容(如文本/密钥/配置文件)。binwalk -e 6666.pcapng # 自动提取所有数据段 xz -d extracted/*.xz # 解压所有 xz 文件
- 破解加密 ZIP:
- 用提取到的潜在密码尝试解压:
unzip -P '潜在密码' extracted/flag.zip
- 若密码未知,使用
zip2john
+john
暴力破解:zip2john flag.zip > hash.txt john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
- 用提取到的潜在密码尝试解压:
- 提取并解压
- 潜在场景推测
- CTF 挑战常见模式:
- 网络流量(pcapng)中隐藏压缩数据,需提取并逐层解压。
flag.txt
是最终目标,其密码可能通过解压前面的xz
文件获得。
- 恶意软件行为:
- 攻击者可能通过流量传输加密的载荷(如ZIP中的
flag.txt
实为恶意指令)。
- 攻击者可能通过流量传输加密的载荷(如ZIP中的
- CTF 挑战常见模式:
下一步行动建议
- 提取所有数据段:
binwalk -e 6666.pcapng
- 优先检查解压后的
xz
内容:- 是否有文本文件包含密码或提示?
- 是否有嵌套的压缩文件?
- 集中破解 ZIP:
- 若从
xz
文件中获得密码,直接解压flag.txt
。 - 若无,启动字典爆破(工具:
john
、fcrackzip
)。
- 若从
关键点:ZIP 加密是核心障碍,而
xz
数据可能是突破口。务必检查解压后的xz
内容是否包含密码线索!
foremost (提取pcapng格式里的内容)
可以依据文件内的文件头和文件尾对一个文件进行分离,或者识别当前的文件是什么文件。比如拓展名被删除、被附加也仍然可以对其分离。
此处我们使用foremost 6666.pcapng命令提取其中的压缩包文件,在zip里面,打开提示需要密码。
如果使用时遇到下述报错:
┌──(kali㉿kali)-[~/Desktop]
└─$ foremost 6666.pcapng
Command ‘foremost’ not found, but can be installed with:
sudo apt install foremost
Do you want to install it? (N/y)y
sudo apt install foremost
[sudo] password for kali:
Error: Unable to locate package foremost
则表明,需要更新软件包列表,用sudo apt update,之后,再次执行foremost 命令进行安装,或执行sudo apt install foremost命令安装后再次执行foremost 命令
Wireshark(提取数据包里面的文件数据)
用Wireshark打开6666.pcapng文件,界面如下
通过分组详情,找到6666.jpg有关的数据连接,能找到很多个,我们随便使用其中一个即可
通过追踪流,追踪TCP流,找到所有有关此TCP 连接的所有数据包
数据包内文件如下
对于jpg格式的文件,FFD8是文件的开头,FFD9是文件的结尾
所以我们从开头到结尾的这一段,就是这个jpg文件的编码,全部复制出来。
文件编码:FFD8FFE000104A464946…F81BFF002F5FE96BFFD9
WinHex(将文件编码转换为图片)
创建一个1MB的空白文件
把完整的文件编码粘贴进来(文件编码:FFD8FFE000104A464946…F81BFF002F5FE96BFFD9),并选择ASCII Hex格式
粘贴进来的样子
另存为jpg文件格式
打开文件,如图所示,密码就在图片上
OVER
Th1s_1s_p4sswd_!!!
flag{3OpWdJ-JP6FzK-koCMAK-VkfWBq-75Un2z}