记录一道非常有意思的CTF题
字数 1298 2025-08-22 12:23:24

Chromowana Tęcza CTF 题目分析与XSS攻击技术教学

题目概述

Chromowana Tęcza是hxp 38C3 CTF中的一道XSS挑战题,结合了多种现代Web安全防护技术和绕过方法。题目提供了两个主要文件:

  • admin.py:管理后台脚本
  • index.php:前端页面

核心防护机制分析

1. CSP (Content Security Policy) 防护

题目采用了Google提出的nonce-{random}机制进行CSP防御:

Content-Security-Policy: script-src 'nonce-random-value'; base-uri 'none'

关键点:

  • nonce机制为每个合法脚本生成唯一随机值,防止内联脚本执行
  • base-uri限制防止基础URL被篡改
  • 参考论文:CSP Is Dead, Long Live CSP!

2. 其他防护措施

  • 后端大小写限制
  • 前台JavaScript限制
  • 特殊设计的bot行为(不断上下滑动页面)

攻击技术:Scroll to Text Fragment (STTF)

STTF是一种新的Web平台功能,允许用户创建指向网页文本任何部分的链接:

https://example.com#:~:text=searchterm

攻击原理:

  1. 攻击者可以检测STTF行为何时发生
  2. 类似于"Scroll to CSS Selector" XS-Leak攻击
  3. 结合detailsobject元素实现窗口调用攻击

参考资源:

预期解分析

攻击链构建

  1. 利用details元素

    • details元素通常需要点击才会显示内容
    • 但可以通过STTF触发自动展开
  2. 结合object元素

    • object标签仅在可见时创建窗口引用
    • object放入details元素中,当STTF触发展开时,object会创建可跨域计数的窗口
  3. 特殊技巧

    <object data=/x><object data=about:blank></object></object>
    

    这种嵌套结构解决了窗口引用创建的问题

  4. 绕过用户交互限制

    • 通过同源HTML注入<meta http-equiv="refresh">
    • 使STTF无需用户交互即可触发

实际攻击方案

1. 绕过CSP

虽然题目有严格的CSP,但可以通过以下方式绕过:

  • 添加大量标签混淆
  • 假设flag不含大写字母(绕过大小写限制)

2. 利用资源耗尽攻击

观察到目标容器资源有限,可以通过:

<iframe src=1 loading=lazy></iframe>

生成大量iframe使bot卡顿,类似于SQL延时注入

3. Flag爆破

通过检测响应时间差异逐字符爆破flag:

  1. 测试字符i - 响应变慢(正确)
  2. 测试其他字符 - 无变化
  3. 编写脚本自动化此过程

教学总结

关键技术点

  1. 现代CSP绕过

    • 理解nonce机制的限制
    • 利用标签污染绕过策略
  2. STTF攻击

    • 结合detailsobject元素
    • 检测文本片段高亮行为
  3. 资源耗尽攻击

    • 利用大量iframe消耗资源
    • 基于时间的侧信道攻击
  4. 实际应用思考

    • CTF环境与现实攻击的差异
    • 简单XSS(如``)在实际中的有效性

防御建议

  1. 对CSP实施多重防护层
  2. 限制单个页面资源加载
  3. 监控异常bot行为
  4. 实施严格的输入过滤和输出编码

参考资源

  1. STTF攻击文档
  2. Google CSP论文
  3. CTF解题笔记
  4. CSP最佳实践
Chromowana Tęcza CTF 题目分析与XSS攻击技术教学 题目概述 Chromowana Tęcza是hxp 38C3 CTF中的一道XSS挑战题,结合了多种现代Web安全防护技术和绕过方法。题目提供了两个主要文件: admin.py :管理后台脚本 index.php :前端页面 核心防护机制分析 1. CSP (Content Security Policy) 防护 题目采用了Google提出的 nonce-{random} 机制进行CSP防御: 关键点: nonce 机制为每个合法脚本生成唯一随机值,防止内联脚本执行 base-uri 限制防止基础URL被篡改 参考论文: CSP Is Dead, Long Live CSP! 2. 其他防护措施 后端大小写限制 前台JavaScript限制 特殊设计的bot行为(不断上下滑动页面) 攻击技术:Scroll to Text Fragment (STTF) STTF是一种新的Web平台功能,允许用户创建指向网页文本任何部分的链接: 攻击原理: 攻击者可以检测STTF行为何时发生 类似于"Scroll to CSS Selector" XS-Leak攻击 结合 details 和 object 元素实现窗口调用攻击 参考资源: STTF XS-Leak文档 Google CSP论文 预期解分析 攻击链构建 利用details元素 : details 元素通常需要点击才会显示内容 但可以通过STTF触发自动展开 结合object元素 : object 标签仅在可见时创建窗口引用 将 object 放入 details 元素中,当STTF触发展开时, object 会创建可跨域计数的窗口 特殊技巧 : 这种嵌套结构解决了窗口引用创建的问题 绕过用户交互限制 : 通过同源HTML注入 <meta http-equiv="refresh"> 使STTF无需用户交互即可触发 实际攻击方案 1. 绕过CSP 虽然题目有严格的CSP,但可以通过以下方式绕过: 添加大量标签混淆 假设flag不含大写字母(绕过大小写限制) 2. 利用资源耗尽攻击 观察到目标容器资源有限,可以通过: 生成大量iframe使bot卡顿,类似于SQL延时注入 3. Flag爆破 通过检测响应时间差异逐字符爆破flag: 测试字符 i - 响应变慢(正确) 测试其他字符 - 无变化 编写脚本自动化此过程 教学总结 关键技术点 现代CSP绕过 : 理解 nonce 机制的限制 利用标签污染绕过策略 STTF攻击 : 结合 details 和 object 元素 检测文本片段高亮行为 资源耗尽攻击 : 利用大量iframe消耗资源 基于时间的侧信道攻击 实际应用思考 : CTF环境与现实攻击的差异 简单XSS(如 `` )在实际中的有效性 防御建议 对CSP实施多重防护层 限制单个页面资源加载 监控异常bot行为 实施严格的输入过滤和输出编码 参考资源 STTF攻击文档 Google CSP论文 CTF解题笔记 CSP最佳实践