尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

XSS-Labs靶场通关秘籍:从入门到精通的20种绕过技巧

XSS-Labs靶场通关秘籍:从入门到精通的20种绕过技巧 1. XSS-Labs靶场入门指南第一次接触XSS-Labs靶场时我和大多数新手一样感到无从下手。这个靶场由20个难度递增的关卡组成每个关卡都设置了不同的过滤机制来阻止XSS攻击。通过反复尝试和失败我总结出了一套系统性的通关方法。靶场环境搭建非常简单从GitHub下载源码后只需要配置PHP环境就能运行。建议使用Chrome浏览器配合开发者工具方便随时查看网页源码和调试。初学者可以先从理解基础概念开始XSS跨站脚本攻击本质上是将恶意脚本注入到网页中当其他用户访问时就会执行这些脚本。在开始实战前需要掌握几个核心知识点HTML标签闭合原理理解如何通过闭合现有标签来插入新内容JavaScript事件触发熟悉onclick、onmouseover等常见事件的用法编码绕过技巧了解URL编码、HTML实体编码等编码方式的差异2. 基础关卡突破技巧2.1 第一关最简单的注入第一关没有任何过滤措施是典型的反射型XSS。查看网页源码会发现GET参数name的值直接插入到了HTML中。这时候最简单的payload就是scriptalert()/script这个payload会弹出一个空白警告框证明注入成功。虽然简单但这个案例展示了XSS最基础的原理 - 未经处理的用户输入直接嵌入到网页代码中。2.2 第二关闭合标签绕过第二关开始出现基础防护测试发现直接使用script标签会被转义。通过查看源码发现这里对双引号进行了HTML实体转义但存在另一个未过滤的输入点。有效payload如下scriptalert()/script这个payload的关键在于先用闭合前一个属性再用闭合标签最后插入我们的恶意脚本。这种技巧在后来的关卡中会反复用到。2.3 第三关事件触发绕过当符号被过滤时script标签就无法直接使用了。这时候可以尝试使用HTML元素的事件属性比如onfocus onfocusjavascript:alert() 这个payload利用了input标签的onfocus事件当输入框获得焦点时就会触发alert函数。需要注意的是单引号是为了匹配原有的属性闭合方式。3. 中级关卡突破技巧3.1 第五关属性注入技巧第五关过滤了on事件和script标签这时候可以考虑使用其他可执行JavaScript的属性比如a标签的hrefa hrefjavascript:alert()点击我/a这个payload创建了一个超链接点击时会执行JavaScript代码。关键在于javascript:这种伪协议的使用它可以让浏览器将后面的内容当作JavaScript执行。3.2 第六关大小写绕过第六关看似过滤了很多关键词但测试发现它没有统一转换为小写。这时候可以使用大小写混合的方式绕过sCriptalert()/scRipt这种绕过方式简单但有效特别适合应对简单的字符串匹配过滤。类似的onfocus也可以写成OnFocus来绕过检测。3.3 第七关双写绕过第七关采用了更严格的过滤不仅检测关键词还会将其删除。这时候可以采用双写技巧a hrehreffjavasscriptcript:alert()点击我/a当中间的href和javascript被删除后剩下的部分正好重新组合成有效的属性。这种技巧在应对简单的字符串替换过滤时特别有用。4. 高级关卡突破技巧4.1 第十关隐藏参数利用第十关表面上看不到明显的注入点但查看源码会发现存在隐藏的input标签。通过测试可以发现t_sort参数存在注入漏洞?t_sort onfocusjavascript:alert() typetext这个payload不仅注入了事件处理程序还通过typetext将隐藏的输入框显示出来方便触发事件。这类关卡考察的是对网页结构的全面分析能力。4.2 第十一关HTTP头注入第十一关需要利用HTTP请求头进行注入这里使用Referer头Referer: onfocusjavascript:alert() typetext通过Burp Suite等工具修改请求头可以实现这种注入。这类漏洞在实际应用中危害很大因为普通用户无法直接控制这些头部信息。4.3 第十五关文件包含技巧第十五关引入了ng-include指令可以用来包含外部文件?src/level1.php?nameimg src1 onmouseoveralert()这种注入方式比较特殊它通过包含另一个存在漏洞的页面来间接实现XSS。理解服务端包含机制是解决这类关卡的关键。5. 专家级关卡突破技巧5.1 第十六关编码绕过第十六关对空格和斜杠进行了严格过滤可以使用URL编码绕过?keywordsvg%0Aonloadalert(1)这里%0A是换行符的URL编码用它来代替空格可以绕过过滤。SVG标签在这种情况下特别有用因为它不需要闭合斜杠也能正常工作。5.2 第十九关Flash XSS第十九关涉及Flash内容的XSS注入需要特殊的payload构造?arg01versionarg02a hrefjavascript:alert()here/a虽然现代浏览器大多不再支持Flash但了解这种技术仍有必要。这类漏洞通常需要反编译SWF文件才能找到准确的触发点。5.3 第二十关复杂Flash注入最后一关需要更复杂的Flash注入技巧?arg01idarg02xss\))}catch(e){alert(1)}//%26width123%26height123这个payload利用了Flash参数解析的特性通过精心构造的字符串实现了代码注入。这类高级技巧需要对目标应用的深入理解。
返回列表