OIer 的 CTF Misc 流量分析学习笔记
我们可能会得到数据库流量或协议流量等数据。我们可以利用这些数据进行分析。
本文一切例题均可在 CTFHub 找到。
数据库类流量
数据库存储着很多流量信息,我们可以使用 Wireshark 进行分析。
MySQL 流量
题目地址:CTFHub -> 技能树 -> Misc -> 流量分析 -> 数据库类流量 -> MySQL 流量
我们可下载到 mysql.pcap
文件,于是我们可以选择使用
Wireshark 打开它。
Wireshark 介绍
Wireshark 是一个网络分析工具,且 Kali Linux
自带。我们可以很方便地使用它分析流量。如打开 mysql.pcap
我们可得到下列信息:

接着我们可直接使用 Wireshark 搜索功能,选择 Packet bytes 并进行搜索即可得到 flag:

Redis 流量
题目地址:CTFHub -> 技能树 -> Misc -> 流量分析 -> 数据库类流量 -> Redis 流量
使用同样的方法搜索 ctfhub{
得到 flag 的前半段:

得到 flag1
的启发,我们猜测可能会有
flag2
,于是我们搜索 flag
得到后半段 flag:

组合即为答案。
MongoDB 流量
题目地址:CTFHub -> 技能树 -> Misc -> 流量分析 -> 数据库类流量 -> MongoDB 流量
使用同样的方法发现 flag 所在字段。然而我们只能看到十六进制数据,于是我们使用下列方法右键复制出字符串:

复制后我们可发现下列字段:
1 | insertflagdocumentsQ0I_id^³ÂįY#bé0flag)ctfhub{XXXXXX}orderedlsidid oýDp¶@9i7 |
看到 ctfhub
字样,于是我们获得了 flag。
协议流量分析
ICMP
我们可以同样使用 Wireshark 对 ICMP 的流量数据进行分析。
Data
题目地址:CTFHub -> 技能树 -> Misc -> 流量分析 -> 协议流量分析 -> ICMP -> Data
我们使用 Wireshark 打开:

观察文件,我们可发现规律:request / reply
的数据中每个由上图红框框出的字符都不一样。我们将这个字符提取出来连起来组成
ctfhub{XXXXXX}
字样,显然为 flag。
Length
题目地址:CTFHub -> 技能树 -> Misc -> 流量分析 -> 协议流量分析 -> ICMP -> Length
我们使用 Wireshark 打开:

观察文件,我们可发现 request / reply
的长度不一且具有规律。我们可猜测此为 ASCII 编码。由于 flag 格式为
ctfhub{XXXXXX}
,于是第一位字符为 c
,而
c
对应的 ASCII 编码为 \(99\),于是我们可推出每个 request / reply
的长度为对应字符的 ASCII 编码加 \(42\)。
于是我们编写下列 Python 程序:
1 | s = '' |
并将每个 request / reply 的长度输入进去,最后输入 \(0\) 即可得到 flag。
LengthBinary
题目地址:CTFHub -> 技能树 -> Misc -> 流量分析 -> 协议流量分析 -> ICMP -> LengthBinary
我们使用 Wireshark 打开:

观察文件,我们可发现 request / reply 只有两种长度,于是我们猜测为二进制表示字符串,其中两种长度分别代表 \(0\) 和 \(1\)。
于是我们编写下列 Python 程序:
1 | s = '' |
将每个 request / reply 的长度输入进去,最后输入 \(0\)。我们可获得两个字符串,其中格式为
ctfhub{XXXXXX}
的即为 flag。