资讯动态

CTF 流量分析实战:从 Wireshark 到 tshark 还原 HTTP 盲注流量中的 Flag

发布时间:2026/9/28 20:14:35 来源:尧图企业网站定制
文档网络安全教程【免费下载链接】ctf-wikiCome and join us, we need you!项目地址https://gitcode.com/gh_mirrors/ct/ctf-wiki点击查看免费下载导读本篇技术指南以 CTF 中经典的流量包取证场景为主线围绕 ctf-wiki 仓库中 HTTP 协议分析文档 展开完整复现「江苏省领航杯-2017hack」一题的解题链路通过 Wireshark 的协议分级与 HTTP 统计把握流量总体特征识别出 SQL 盲注型 HTTP 流量再借助 tshark 批量提取 URL、配合 Python 脚本还原出被逐位爆破的 Flag。读完本文你将掌握 HTTP 协议流量分析的基本流程、布尔盲注流量的典型识别特征以及tshark -T fields -e这一高效命令行提取手段的实战用法。HTTP 协议流量取证的基础背景HTTPHyper Text Transfer Protocol超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用层协议也是万维网数据通信的基础。在 CTF 的 Misc 流量分析题目中HTTP 协议流量是最常见的考察对象之一比赛方通常会提供一个 PCAP 文件其中混杂着大量无关流量选手需要先分类过滤再定位到包含关键信息的 HTTP 请求或响应最终从中提取出 Flag。结合仓库中 流量包分析简介 的总结一次完整的流量分析通常分为四步总体把握利用协议分级Protocol History、端点统计Endpoints快速判断流量的主体协议与通信双方过滤筛选借助显示过滤器语法按 Host、协议、字符串特征缩小范围发现异常查找特殊字符串、异常的协议字段或判断「Flag 是否位于服务器中」数据提取用字符串提取或文件还原的方式取出最终数据。hack一题正是上述流程的典型实践——先通过总体观察锁定「HTTP 为主」再通过 URL 特征识别出盲注行为最后用 tshark Python 完成数据提取。例题实战江苏省领航杯-2017「hack」总体观察锁定流量主体拿到hack.pcap流量包后首先在 Wireshark 中做总体观察可以得到三个关键结论HTTP协议为主流量的绝大部分数据包都是 HTTP 请求而非其他协议192.168.173.134为主所有 HTTP 请求都指向同一个服务端 IP通信目标高度集中不存在附件没有需要从 HTTP 响应中导出的文件对象Flag 不以文件形式藏在数据包里。下图是使用 Wireshark 对流量按 Host 进行 HTTP 统计的结果可以直观印证上述判断流量中所有 HTTP 请求均指向192.168.173.134URL 统一为根路径下的index.php且请求参数均为id数量多达上千个呈现出典型的自动化批量请求特征。特征判断这是一份 SQL 盲注流量包从这张统计图中可以看到更进一步的细节请求 URL 形如/index.php?id1%27and%2011%23URL 编码了单引号、空格与注释符#是典型的单引号字符型 SQL 注入测试语句以及/index.php?id1%27and%20(select%20ascii(substr(database(),1,1)))33%23这类请求——后者属于布尔盲注的核心特征攻击者逐位猜测数据库或字段内容的 ASCII 值通过构造恒真/恒假的 SQL 条件从页面返回差异中确认每一位的取值。结合「大量同参数、同结构的密集请求」「URL 中带and、ascii、substr、%23注释符等关键字」这两点基本可以判断这是一个 SQL 盲注过程中产生的流量包。由此可以确定 Flag 的还原方向盲注的每一次请求都在猜测某个字符的 ASCII 码因此提取出全部 URL解析出其中猜测的 ASCII 值序列再转换为字符即可得到 Flag。提取 URLtshark 一条命令搞定手工在 Wireshark 中翻上千个请求显然不现实这里使用 Wireshark 的命令行版tshark批量提取。核心命令如下tshark -r hack.pcap -T fields -e http.request.full_uri | tr -s \n | grep flag log这条命令的语义是片段作用-r hack.pcap指定读取的流量包文件-T fields将输出格式切换为「字段模式」只打印指定字段-e http.request.full_uri指定提取 HTTP 请求的完整 URI 字段tr -s \n将连续换行压缩为单个换行去掉空行grep flag log只保留包含flag的请求行写入log文件执行后log文件中就是所有与 Flag 猜测相关的盲注请求 URL每条请求中的数字%23部分即每次猜测的 ASCII 值。还原 FlagPython 脚本解析盲注结果拿到 URL 列表后用 Python 正则提取每次猜测的数值并还原字符。原文档给出的脚本如下import re with open(log) as f: tmp f.read() flag data re.findall(r(\d*)%23, tmp) data [int(i) for i in data] for i, num in enumerate(data): try: if num data[i1]: flag chr(num) except Exception: pass print flag脚本的核心逻辑值得拆解re.findall(r(\d*)%23, tmp)匹配 URL 中与%23即#注释符之间的一段数字。例如...ascii(substr(database(),1,1)))33%23会提取出33这正是盲注对某个字符的 ASCII 猜测值int(i)统一转为整数便于比较大小关键循环if num data[i1]布尔盲注对每个字符是从小到大逐值尝试、命中后即进入下一字符因此同一字符的多个猜测值单调递增而相邻字符交界处会出现「前一个值大于后一个值」的断点。脚本利用这一规律把每个递增序列的末尾值即匹配成功的 ASCII 码用chr(num)转换为字符并拼接最终得到完整的 Flagexcept Exception: pass处理列表末尾越界的情况。需要说明的是脚本末尾的print flag是 Python 2 语法原文基于 Python 2 环境。若在 Python 3 下运行只需将最后一行改为print(flag)其余逻辑完全一致可原样复现。整个提取过程无需手工干预一条tshark管道命令加十余行脚本即可从流量包直达 Flag这也是这类题目「流量包取证 数据还原」的标准解法。工具纵深Wireshark 与 tshark 的配合用法Wireshark 侧的 HTTP 统计在本例的「总体观察」环节Wireshark 的信息统计功能提供了重要依据协议分级Protocol History以树状分支展示捕获文件中所有协议的包数、字节数与带宽占比用于判断「HTTP 为主」端点统计EndPoints列出所有通信端点上的统计信息用于确认「192.168.173.134为主」这一结论HTTP 统计Packet Counter按 Host / URI 聚合 HTTP 请求数量直观呈现目标高度集中在index.php?id...上见上文插图。上述功能的具体操作与字段含义可参考仓库中的 Wireshark 常用功能介绍其中还包含显示过滤器语法[not] Expression [and|or] [not] Expression、 ! 与and/or/not等运算符的用法说明。tshark 侧的高效提取范式Wireshark 图形界面适合「观察与定位」而批量提取数据则更适合 tshark。仓库 数据提取 一节总结了 tshark 的通用范式tshark -r **.pcap -Y ** -T fields -e ** | **** data其中-Y display filter指定显示过滤器语法与 Wireshark 显示过滤器一致用于先过滤后提取-T fields文本输出格式切换为字段模式其他可选值还包括pdml、ps、json、ek、tabs、text等-e field指定要打印的字段名例如http.request.full_uri、usb.capdata、dns.qry.name等。一个实用技巧是当不确定-e后面该填什么字段时可以在 Wireshark 中右键点击感兴趣的数据段直接拷贝对应的字段名保证字段拼写准确。同样的tshark -T fields -e范式在本仓库的其他例题中也被反复使用例如 DNS 协议分析 中用tshark -r dnscap.pcap -T fields -e dns.qry.name提取子域名隐写数据以及 数据提取 中通过-e usb.capdata配合awk还原鼠标轨迹坐标。可见「-Y过滤 -e取字段 管道交给文本工具/脚本」是贯穿整个流量分析章节的通用方法论。小结以「领航杯-2017hack」为代表的 HTTP 盲注流量题完整覆盖了 CTF 流量分析的三个核心步骤协议分析用 Wireshark 的协议分级、端点统计与 HTTP 聚合统计快速得出「HTTP 为主、目标单一、无附件」的总体判断异常发现从 URL 中的and、ascii(substr())、%23等关键字与密集的相同参数请求识别出 SQL 布尔盲注行为确定 Flag 藏在猜测的 ASCII 序列中数据提取用tshark -r xxx.pcap -T fields -e http.request.full_uri一条命令完成 URL 批量提取再用正则 字符比较还原出 Flag。掌握「Wireshark 观察定位、tshark 批量提取、脚本还原数据」的组合拳就足以应对大多数 HTTP 协议相关的流量取证题目。在此基础上可进一步阅读仓库中的 HTTPS、FTP、DNS 等协议分析章节举一反三地扩展到更丰富的取证场景。赞分享文档网络安全教程【免费下载链接】ctf-wikiCome and join us, we need you!项目地址https://gitcode.com/gh_mirrors/ct/ctf-wiki点击查看免费下载相关推荐HTTP 流量包分析实战以 SQL 注入盲注流量為例ctf-wikiHTTP 流量包分析实战以 SQL 注入盲注流量為例ctf wiki 本篇技術指南以 ctf wiki 流量分析章節中 HTTP 協議分析 https:/文档网络安全教程CTF 流量取证之数据提取基于 ctf-wiki 的 Wireshark 与 tshark 实战指南CTF 流量取证之数据提取基于 ctf wiki 的 Wireshark 与 tshark 实战指南 流量包取证是 CTF Misc杂项方向的核心考察点之文档网络安全教程CTF 流量包數據提取實戰從 Wireshark、tshark 到自定義協議解析CTF 流量包數據提取實戰從 Wireshark、tshark 到自定義協議解析 本文圍繞 CTF Wiki 流量分析章節 https://link.gitc文档网络安全教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑