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
2
3
4
5
6
7
s = ''
while True:
x = int(input())
if x == 0:
break
s += chr(x - 42)
print(s)

并将每个 request / reply 的长度输入进去,最后输入 \(0\) 即可得到 flag。

LengthBinary

题目地址:CTFHub -> 技能树 -> Misc -> 流量分析 -> 协议流量分析 -> ICMP -> LengthBinary

我们使用 Wireshark 打开:

观察文件,我们可发现 request / reply 只有两种长度,于是我们猜测为二进制表示字符串,其中两种长度分别代表 \(0\)\(1\)

于是我们编写下列 Python 程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
s = ''
t = ''
n = 0
m = 0
cnt = 0
while True:
x = int(input())
if x == 0:
break
elif x == 74:
n = 2 * n
m = 2 * m + 1
elif x == 106:
n = 2 * n + 1
m = 2 * m
cnt += 1
if (cnt == 8):
s += chr(n)
t += chr(m)
n = m = cnt = 0
print(s)
print(t)

将每个 request / reply 的长度输入进去,最后输入 \(0\)。我们可获得两个字符串,其中格式为 ctfhub{XXXXXX} 的即为 flag。