[INSHack2019]Passthru

本篇将分享一道关于 WEB 流量分析的 CTF 题目解题思路,核心在于解密 TLS 流量并从请求中提取关键参数。

解题步骤

1. 加载流量包与配置解密

首先,在 Wireshark 中导入题目附件 passthru.pcap。流量记录显示为 TLSv1.2 协议,表明通信内容已被加密。

加密的 TLS 流量

为了解密流量,需要配置 TLS 解密密钥。导航至 Edit > Preferences > Protocols > TLS,并在 (Pre)-Master-Secret log filename 字段导入 sslkey.log 文件。

配置 TLS 解密密钥

配置完成后,Wireshark 会自动解密 TLS 流量,还原为 HTTP 协议,便于后续分析。

2. 过滤并提取参数

在显示过滤器中输入 http.request.method == "GET",筛选所有 HTTP GET 请求。观察发现,请求的 URL 中包含一个名为 kcahsni 的参数。kcahsniinshack 的逆序,这提示我们需要提取所有 kcahsni 参数的值并进行逆序处理。

发现 kcahsni 参数

为了高效提取所有请求中的 kcahsni 参数,可使用 tshark 命令行工具。执行以下命令,将所有参数值批量提取到 query.txt 文件中:

1
tshark -r passthru.pcap -o tls.keylog_file:sslkey.log -T fields -e http.request.uri.query.parameter -Y "http.request.uri.query.parameter contains \"kcahsni\"" > query.txt

提取的参数值

3. 拼接并反转 Flag

query.txt 中的数据经过 URL 编码,需要解码、拼接和逆序。使用以下 Python 脚本处理:

1
2
3
4
5
6
7
8
from urllib.parse import unquote
import re

with open('query.txt', 'r') as f:
data = unquote(f.read())
rlist = re.findall(r'kcahsni=(.*?),', data)
result = bytes.fromhex(''.join(rlist))[::-1]
print(result.decode())

运行脚本,即可得到最终的 Flag。

运行脚本获取 Flag

Flag: INSA{b274dddb2c7707ebe430dadcf1245c246713502d6e9579f00acd10a83f3da95e}