网络通信是一个个小小的"数据包"在传输。抓包工具把某个网卡上流过的包按时间顺序原样记录下来,存成一个文件,这就是抓包文件。
.pcap —— 老的封装格式(Wireshark 1.x 时代常用).pcapng —— 新一代格式,现在主流,CTF 里最常见CTF 题目类型很多:Web、杂项(Misc)、密码(Crypto)、逆向(Reverse)、Pwn……。流量分析通常归在 杂项(Misc) 或单独的 取证/流量分析 分类,常和 Web 攻击结合(SQL注入、越权、命令执行都是流量分析题的热门素材)。
它考的不是"会不会某个漏洞",而是 "拿到别人的攻击记录后,你能不能读懂它"。很多题里的攻击手法你并不需要复现,只需要会"看"。所以它相对友好,也特别适合新手入门取证。
| Wireshark(图形界面) | tshark(命令行,装 Wireshark 自带) | |
|---|---|---|
| 适合 | 人肉看图、点开看细节、新手入门 | 批量过滤、导出对象、接脚本自动化 |
| 优点 | 直观、有面板/右键/可视化解码 | 可 grep、可管道、一条命令出结果 |
| 缺点 | 数据多时艰难、不好批处理 | 学习成本、看不到图形化结构 |
| 典型场景 | 定位一条可疑请求、Follow 看完整流 | 把 HTTP 响应全部导出成文件再算哈希 |
实战用法是两者结合:先在图形里看懂思路,再把重复劳动丢给命令行/脚本。本栏目 07 脚本与命令 专门讲 tshark。
任何流量题都能套。每步的"目的"和"典型动作"如下:
目的:知道这是"哪类流量",值不值得解,重点是明文还是加密。
动作:菜单 统计 → 协议分级(Protocol Hierarchy),一眼看到各种协议占比;同时看总帧数、时间范围。
TLS(即 HTTPS 加密),直接读文本是读不到的,可能要解密(见 05 协议),也会费劲很多。目的:总包可能成百上千,其中绝大多数是无关的心跳、握手、其他服务。把焦点收敛到可疑内容。
动作:用显示过滤器,例如 http、http.request、http.request.uri contains "xxx"。详见 03 过滤器。
目的:同一个攻击会在"请求"和"响应"两端都有信息,你要知道答案在哪个方向。
动作:看请求的 URL/参数(攻击者问了什么),再看响应体/JSON(服务器回答了什么),必要时看时间延迟(盲注题)。详见 04 定位术。
目的:网络里大量信息是编码过的(URL编码%XX、Base64、十六进制、UTF-8汉字)。不还原就看不懂。
动作:识别编码类型 → 用工具/命令还原。典型:URL解码、Base64解、Hex转文本。详见 07 的编码识别与 08 的避坑。
目的:这一步才产生 Flag。可能要做排序、拼接、算 MD5/SHA、逐字符还原。
动作:严格按题目指令做,并验算:数量对不对?总长度对不对?(例如 10000×18=180000;28个字符才是flag)。详见 06 与 08。
很多人一上来就开抓包,结果漫无目的。正确做法是先拆题目指令。题目通常会告诉你三件事:
1️⃣ 找什么字段 —— 例如"所有泄漏的身份证号" → 去流量里找 idcard 字段。
2️⃣ 怎么组合 —— 例如"按被窃取时间排序后拼接" → 答案的组装规则。
3️⃣ 最终形式 —— 例如"计算 MD5 后套上 flag{} "" → 输出的格式。
把这三点写在草稿上,你后面每一步都知道"我要去流量里找什么、找到后干什么"。这比 tools 更重要。
题目:"攻击者通过 SQL 时间盲注逐个爆破表明 flag 列的数据。请还原 flag。响应延迟 5 秒表示条件为真,1 秒表示为假。"
新手常被"写脚本"劝退。但其实:
脚本永远是最后的手段,理解才是第一步。需要模板时看 07。