一次网络请求,必然包含两个方向:客户端发出请求(问了什么) 和 服务器返回响应(答了什么)。
🔍 请求(Request) —— 攻击者的动作:访问了哪个 URL、带了什么参数、用了什么方法(GET/POST)、发了什么数据。参数是攻击者主动构造的,常常藏着注入payload、要爆破的字符。
💬 响应(Response) —— 服务器的结果:状态码、响应头、响应体(正文/JSON)。流量分析里大多数 flag 都藏在响应体里。
选中一条报文后,中间面板会展开该包的各层结构。看请求就点三层中的 Hypertext Transfer Protocol(HTTP) 层:
选中响应报文,HTTP 层会有:
有些攻击结果不在包内容里,而在"时间间隔"里——最典型是 SQL 时间盲注:服务器按条件真假,故意 sleep 几秒或用不用时延响应。新手最该掌握两个概念:
| 列显示模式 | 含义 | 用途 |
|---|---|---|
| 相对时间(Relative) | 从第1个包开始累计的秒数 | 主用:同一请求的包时间差清晰 |
| 绝对时间(Absolute) | 墙钟,真实日期时间 | 区分来自不同时刻的会话 |
| 延迟时间(Delta,显示为两次包之间的差值) | 相邻两包时间差 | 直接看"这一请求等了多久",盲注就是看它 |
切换:View → Time Display Format → 选择 Seconds Since Previous Captured Packet(延迟) 或 Seconds Since Beginning of Capture(相对)。
时间盲注的原理:请求里有 if(ord(substr(flag,位置,1))>64, sleep(5), 0) 之类的条件。条件为真 → 响应延迟 ~5 秒;为假 → 立即返回。
所以:延迟长=该位置的 ASCII 满足条件,延迟短=不满足。 多次二分即可确定每一位字符。详细还原见 09 实战(挑战25)。
单看一个包只能看到"一段话的一句",右键任意包 → Follow → TCP Stream(HTTP 就用 Follow → HTTP Stream)会打开一个窗口,把这次完整连接的所有请求和响应原文拼在一起,还能着色区分两个方向、搜索、设置偏移。
Follow 窗口怎么看:
flag、{")。tcp.stream == N 精准回到这条流。当流量里传输了很多文件(图片、压缩包、文本、证书),或响应很多时,单条看太慢。用 File → Export Objects → 按协议(HTTP / SMB / TFTP / DICOM / IMF …)一次列出所有该协议传输的对象,可预览、可全部保存。
典型用法(HTTP):
File → Export Objects → HTTP 会列出所有 HTTP 请求/响应,含文件名、大小、类型。tshark -r x.pcap -Y "..." -T fields -e http.file_data,见 07。| 题目说"找什么" | 信息通常在哪 | 怎么取 |
|---|---|---|
| 明文 flag / 一串连续字符 | 响应体或某条请求参数 | Follow → 全文搜索 flag |
| 身份证/手机号等敏感字段 | 响应体 JSON、API 返回 | 显示过滤器 http + 搜字段名 |
| 注入型 flag(逐个爆破) | 每一请求的时间延迟 或 响应内容的亚全/全真差别 | 延迟分析 + 逐位还原(见 09) |
| 传输的文件图/压缩包 | HTTP 下载响应 / 邮件附件 / 其他 | Export Objects 一次导出 |
| 账号密码等凭据 | POST 正文、Cookie、Basic Auth、明文 FTP/Telnet | Follow + 找 password/login |
| DNS/HTTP 对外请求(外带 OOB) | DNS 查询域名、HTTP 请求 URL 的子域/参数 | 过滤器 dns / http.request 找外联 |