第二次校赛题目复现

Misc

NetTraffic

使用 Wireshark 将题目中的附件打开。

在显示过滤器中输入 http 以过滤 http 数据包。

右键第 17 条流量,查看该条流量的 HTTP 流。

发现攻击者通过 /upload.php 上传了一个冰蝎木马到服务器当中。分析上传的木马,发现采用 AES 将数据进行加密,木马中可以找到 AES 加密所使用的密钥为 e45e329feb5d925b

查看第 352 条流量的 HTTP 流

发现服务器返回了一段加密后的数据。

先将获取到的数据进行 AES 解密。

再将 msg 中的数据进行 Base64 解密,即可获得 flag。

你是 mvp 还是躺赢狗?

将获取到的图片使用 binwink 进行分离。

发现图片中有一个压缩包,压缩包存在伪加密,binwink 自动将压缩包里的内容提取出来了。

将取到一个图片在 kali 里打开,提示存在 CRC 错误,推测存在 PNG 图片高度隐写。

将获取到的图片使用十六进制编辑器打开。

修改 PNG 文件高度 16 进制值改大。

查看图片即可获得 flag。

奇怪的动图

将题目中的附件解压,发现存在一个加密的压缩包和一张 gif’图片。

orgin.gif 打包成压缩包,发现该图片的 CRC 值与 flag.zip 压缩包中的 CRC 值相同,可以进行 ZIP 明文攻击。

根据题目中的提示,flag.zip 是由 bandzip 压缩而成。明文攻击时加密与未加密的压缩包需要使用同样的软件打包,所以说需要用 bandzip 将 orgin.gif 打包成压缩包才可以进行明文攻击。

使用 ARCHPR 进行明文攻击。

攻击成功即可获得 flag.zip 的密码。

将压缩包解密获得一个名为 loading.gif 的动图。

使用 PuzzleSolver 工具获取 gif 图片的帧间隔。发现存在 30 与 130 两种时间间隔。

将 30 替换成 0,130 替换成 1,得到一串二进制数据。

将二进制数据解密,即可获得 flag。

Web

myjwt

访问题目地址,发现页面给出了当前的 JWT 值。

将 JWT 解密,发现当前页面的用户状态为 guest

使用 jwtools 工具暴力破解出 jwt 的密钥为 12345678

将 user 的值改为 admin,并用爆破出来的密钥重新编码。

访问/flag 页面,提示需要 Authorization 头。

将重新编码后的 JWT 值通过构造 Authorization 头之后使用 Burp 提交到服务器,即可获得 flag。

pppppyyyyyyyyyyyyyyyy

分析源码,根据提示需要暴力破解 admin 用户的密码。

使用 Burp 爆破用户密码,爆破出 admin 用户的密码为 admin123

使用 admin/admin123 进行登录,跳转到 dashboard 页面。

分析/dashboard 的路由,发现存在 pickle 反序列化漏洞。

使用 deepseek 构造 payload。

1
2
3
4
5
6
7
8
9
10
import pickle
import os

_class_ Exploit:
_def_ __reduce__(_self_):
_# 读取环境变量并返回_
return (os.getenv, ('GZCTF_FLAG',))

payload = pickle.dumps(Exploit()).hex()
print(payload)

获取到序列化后的数据。

在页面输入框提交,即可获得 flag。

泄露

使用 diesearch 进行信息搜集,发现存在 git 泄露。

使用 GitHack 工具获取泄露的数据。

.flag.swp 中获得 flag