磐石行动 2025 初赛

打电赛去了,等回来之后没剩多长时间了,就只做了两道题,所幸还是有点收获的 (虽然不多)

Misc

easy_misc

Challenge

Solution

附件分别是 secret.pngflag.zip

试了下压缩包发现不是伪加密。从里面只有一个 flag.txt 来看排除了明文攻击的可能,推测会在后续得到压缩包的解压密码,因此接下来先把关注点放在图片上。

图片本身是一个缺少三个定位图案的二维码,补上之后扫面得到一个假 flag FAKE_FLAG{nizenmezhemeshuliana!}

好吧,被嘲讽了

接下来再看看有没有隐写,结果发现文件尾藏有一个压缩包,提取出来之后第一步就是看看是不是伪加密

发现果然是伪加密,修复后解压得到 what.txt,里面的内容形如 Ook.,一眼看出是 brainfuck,解密得到 flag.zip 的解压密码 y0u_c@t_m3!!!

解压 flag.zip ,文件 flag.txt 的内容即为 flag

1
flag{3088eb0b-6e6b-11ed-9a10-145afc243ea2}

derderjia

Challenge

该死,一头狡猾的马攻击了我的服务器,并在上面上传了一个隐秘的文件,请你帮我找到这个文件,来惩治它。

Solution

本题是流量分析

筛选出 http 流量

1
_ws.col.protocol == "HTTP"

发现流量 #302 执行了命令 cat server_key.txt, #305 是返回结果(如下)

1
2
3
4
5
6
7
8
9
10
SERVER_HANDSHAKE_TRAFFIC_SECRET 8736827acbd4e800d94e5bc87cdbab64f0d77fc6724acda32a7ee24f7c60db50 9f78e4604953f8aab6623774bd88a9720fde4d6303619847242c0cd00c64ff2644b83823dee3e08577552389d5af52de
EXPORTER_SECRET 8736827acbd4e800d94e5bc87cdbab64f0d77fc6724acda32a7ee24f7c60db50 54b708ed18540ab2b7b7b54d49692a07ccc9dd7ec34a1e3df4ecdc3c53146f799d794ab805cf9b21c08d464aeff64f42
SERVER_TRAFFIC_SECRET_0 8736827acbd4e800d94e5bc87cdbab64f0d77fc6724acda32a7ee24f7c60db50 486c14091928a932ff17e9cd52111548837f0b6cbe372264086f45d668862e4c0ea792cbbd9bfba1468834f5eebd5f69
CLIENT_HANDSHAKE_TRAFFIC_SECRET 8736827acbd4e800d94e5bc87cdbab64f0d77fc6724acda32a7ee24f7c60db50 c89356f603c98d9257b9391dde781e115f6133d4d9c9be704d77843f7cb9ec82488c46195660b5059ca742bd1da01c17
CLIENT_TRAFFIC_SECRET_0 8736827acbd4e800d94e5bc87cdbab64f0d77fc6724acda32a7ee24f7c60db50 6f3912fd7864676affa95e344a8fcbd1d2f452c0b00b7969bffff93a9149313a2d07438164dbc3d36de6888b3bee4e9c
SERVER_HANDSHAKE_TRAFFIC_SECRET ce5146a2783f8a34f0acbc25e2d2203d65ae09be6cc1ebbc5c5aa782149d3fbf afa6b2942173a3137105ad1a7318413c4555f39be24d98363eb934d9d4673b0c4846efad533da90549db01826c26963e
EXPORTER_SECRET ce5146a2783f8a34f0acbc25e2d2203d65ae09be6cc1ebbc5c5aa782149d3fbf 9334222dde7ed136e73d4ded2af66fab4cd2ed099a438e60ad221d1e0e95e3e694b98b2e45a7444d4f2d38213e64981e
SERVER_TRAFFIC_SECRET_0 ce5146a2783f8a34f0acbc25e2d2203d65ae09be6cc1ebbc5c5aa782149d3fbf 213d59d6262f24428d0daf8ee557d7cc0a776aaffc5e706c3a5871d61f83e90d1932586c463a1452fc4d0a491e500d55
CLIENT_HANDSHAKE_TRAFFIC_SECRET ce5146a2783f8a34f0acbc25e2d2203d65ae09be6cc1ebbc5c5aa782149d3fbf bfc79bee6244302f1a0091e6cd289131ede8f17a0d42f09b32970a1091002db1cf1b10cf0b1e1097490daacbc8c53aef
CLIENT_TRAFFIC_SECRET_0 ce5146a2783f8a34f0acbc25e2d2203d65ae09be6cc1ebbc5c5aa782149d3fbf d93ae56aa54258dc541f74ae06b137bdffb00b18f0b3bffadf0a7999b6f71fde5257e1209d08a9765bccf5f7c25c6a76

这是 tls 密钥,这暗示了我们接下来要用它解密 tls 流量,使用步骤如下:

  1. 把这个文件存在一个文档里 (名字随意,在这个例子中我使用的是 keylog.txt)
  2. 在菜单栏中,选择 编辑 (Edit) -> 首选项 (Preferences)
  3. 在弹出的窗口中,展开左侧的 协议 (Protocols) 列表
  4. 向下滚动找到并选中 TLS
  5. 在右侧的设置中,找到 (Pre)-Master-Secret log filename 这一项
  6. 点击旁边的 浏览… (Browse…) 按钮,然后选择前面保存的 keylog.txt 文件
  7. 点击下面的 应用 按钮保存设置

然后筛选出 tls 流量

1
_ws.col.protocol == "TLSv1.3"

PanShi2025Quals-1

发现 #185 上传了文件,追踪流

PanShi2025Quals-2

PanShi2025Quals-3

PK 开头,是压缩包,提取出来发现是加密算法为 AES256 的真压缩,里面是一张图片,根据题目描述这多半就是 flag 了

由于是 AES 加密,这说明了解压密码的线索肯定还藏在流量里

滑到底部发现 #310 到 #313 这 4 条 DNS 流量很可疑

1
2
3
4
310	350.217926	192.168.166.28	8.8.8.8	DNS	71	Standard query 0x0000 TXT fragment1.secret-data.com
311 350.218134 8.8.8.8 192.168.166.28 DNS 129 Standard query response 0x0000 TXT fragment1.secret-data.com TXT
312 350.218316 192.168.166.28 8.8.8.8 DNS 71 Standard query 0x0000 TXT fragment2.secret-data.com
313 350.218431 8.8.8.8 192.168.166.28 DNS 129 Standard query response 0x0000 TXT fragment2.secret-data.com TXT

fragment1R29vZCEgWW91IEZpbmQgfragment2aXQgUGFuU2hpMjAyNSE=

合起来就是 R29vZCEgWW91IEZpbmQgaXQgUGFuU2hpMjAyNSE=,base64 解码得到 Good! You Find it PanShi2025!,由此可知压缩包的解压密码就是 PanShi2025!(注意是带感叹号的)

对解压得到的 derderjia.png 修复宽高即可在图片底部找到 flag

1
flag{W0w_Y0u_F0und_M3!}

像素流量

Challenge

小明是网络安全高手,刚刚截取到黑客的新型通信方式,现在邀请你一同破解,通信载体被小明以一种常见的存储方式隐藏了,流量就藏在那个载体上,情况紧急,请速速破解!!

Solution

0 解题 hhh

附件 secret.png 图片上的内容是 1->2, 2->3, 3->1

发现存在 LSB 隐写,顺序是 RGB,把藏的这张图片提取出来

PanShi2025Quals-4

把每个像素的 hex 值提取并拼接起来(要去除末尾占位的黑色像素),拼接顺序是 GBR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
from PIL import Image

input_filename = 'traffic.png'
output_filename = 'traffic.pcap'

try:
with Image.open(input_filename) as img:
img = img.convert('RGB')
pixels = list(img.getdata())

total_pixels = len(pixels)
print(f"原始图片总像素数: {total_pixels}")

# 从后向前找到第一个不是黑色 (0,0,0) 的像素
last_valid_index = total_pixels - 1
while last_valid_index >= 0 and pixels[last_valid_index] == (0, 0, 0):
last_valid_index -= 1

# 根据找到的索引,截取有效的像素数据
valid_pixels = pixels[:last_valid_index + 1]

valid_pixel_count = len(valid_pixels)
trimmed_count = total_pixels - valid_pixel_count
print(f"有效的像素数据: {valid_pixel_count}个")

hex_parts = []

# 遍历有效的像素
for r, g, b in valid_pixels:
# 拼接顺序 G, B, R
hex_g = format(g, '02x')
hex_b = format(b, '02x')
hex_r = format(r, '02x')

hex_parts.append(hex_g)
hex_parts.append(hex_b)
hex_parts.append(hex_r)

full_hex_string = "".join(hex_parts)
binary_data = bytes.fromhex(full_hex_string)

with open(output_filename, 'wb') as f_out:
f_out.write(binary_data)

except Exception as e:
print(f"处理过程中发生错误: {e}")

打开找到流量 #2590 上传了一个压缩包,下载下来发现为真压缩,里面只有一个文件 flag.txt

没发现别的线索,接下来需要继续分析流量寻找解压密码(到这里就找不到了

永久暂时搁置了