【xsslabs】第12-19关

第十二关

javascript:alert(/xss/)

​User-Agent注入点​ ​:t_ua字段的值直接来自浏览器的User-Agent

​输出位置​​:页面显示"没有找到和javascript:alert(/xss/)相关的结果"

​alert被重写​​:调用alert会触发页面跳转

使用Burp Suite

拦截对level12.php的请求

修改User-Agent头:

User-Agent: "><script>confirm(1)</script>

转发请求 8888" type="text" οnmοuseοver="alert(666)

页面加载后会触发confirm弹窗

"闭合value属性

onmouseover=confirm(1)注入事件处理器

当鼠标悬停在隐藏字段上时触发confirm弹窗

第十三关

先测试 javascript:alert(/xss/)

​Cookie注入点​ ​:t_cook字段的值可能来自Cookie

​alert被重写​​:调用alert会触发页面跳转

第十四关跳过

第十五关

过关的核心是构造一个能自动触发 XSS 的 URL,并通过 ng-include加载一个存在 XSS 漏洞的页面。​在浏览器地址栏或 HackBar 中输入以下 URL

bash 复制代码
http://127.0.0.1/xsslabs/level15.php?src='level1.php?name=<img src=1 onerror=alert(1)>'
    • src参数的值用单引号包裹,确保 AngularJS 将其视为字符串路径。level1.php是同一服务器上的一个存在 XSS 漏洞的页面(它未过滤 name参数)。<img src=1 onerror=alert(1)>是自动触发的 XSS 载荷:当图片加载失败(src=1无效)时,onerror事件会自动执行 alert(1)

执行 URL 并触发过关​

在 HackBar 中输入上述 URL,点击 ​​Execute​ ​ 执行。页面加载后,ng-include会动态包含 level1.php?name=<img src=1 onerror=alert(1)>。由于 level1.php漏洞,<img>标签被渲染,触发 onerror事件,执行 alert(1)。页面中重写的 window.alert函数会被触发,点击确认后,自动跳转到 level16.php,过关成功。

<img onerror>不需要用户交互,页面加载即执行。

通过 ng-include包含 level1.php,利用了 level1.php的 XSS 漏洞(它直接输出 name参数值)。

单引号确保 src参数被正确解析为字符串,而不是 AngularJS 表达式,避免语法错误。

第十六关

第16关的服务器端代码会对用户输入进行几层处理:先将整个字符串转为小写,然后将关键词 script、空格、斜杠/都替换成 HTML 实体 &nbsp;(一个不会被解释为空格的特殊字符)。

关键在于,虽然普通的空格被过滤了,但我们可以用其他字符来充当标签属性之间的分隔符。最常用且有效的是 ​​URL编码的换行符 %0a ​(或其大写形式 %0A)。

<img%0asrc=1%0aonerror=alert(1)>

​**<img...>​** ​:使用 img标签来避开对 script关键词的检查。

%0a​:用换行符代替空格,分隔标签内的不同属性。服务器可能不会将其视为普通空格进行过滤,而浏览器在解析 HTML 时通常能正常将其识别为属性分隔符。

onerror=alert(1) ​:这是一个经典的 XSS 向量。它指定当图片加载失败(由于 src=1是一个无效的地址)时,执行 JavaScript 代码 alert(1)

http://靶场地址/level16.php?keyword=<img%0asrc=1%0aonerror=alert(1)>

除了 img标签的 onerror事件,你也可以尝试使用其他标签和事件处理器,只要确保用 %0a分隔属性即可。

<svg%0aonload=alert(1)>
​使用 <input>标签​ ​(需要用户交互,如鼠标悬停):<input%0atype="text"%0aonmouseover="alert(1)">

第十七关

payload:

bash 复制代码
http://127.0.0.1/xsslabs/level17.php?arg01=a&arg02=b 8888 onmouseover=alert(1)

服务器端的PHP代码会获取arg01arg02参数的值,经过htmlspecialchars()函数过滤(主要转义特殊字符)后,将它们以key=value的形式拼接到<embed>标签的src属性中。这里的 ​8888 ​ 和 ​onmouseover=alert(1) ​ 都被直接拼接到了src属性的值里。虽然8888看起来是多余的,但它并没有破坏语法结构。

​​ onmouseover=alert(1)​​ 被成功写入<embed>标签的src属性。虽然它位于src的字符串内,但浏览器在解析时,​​onmouseover依然被识别为该<embed>标签的一个有效事件属性​​。当​​鼠标移动到这片由<embed>标签定义的区域(通常是SWF文件加载的区域)时​​,onmouseover事件被触发,其指定的JavaScript代码alert(1)便得以执行。

第十八关

bash 复制代码
http://127.0.0.1/xss//level18.php?arg01=a&arg02=b onmouseover=alert(1)

服务器代码将参数直接拼接到src属性中

第十九关

这一关需要利用Flash文件(SWF)中的XSS漏洞。由于现代浏览器已不再支持Flash,​​通关此关的关键是配置一个能运行Flash的环境并使用特定的Payload​​。

配置Flash环境

1.使用专用Flash浏览器​​

下载并安装专为Flash设计的浏览器(如 ​​Flash游戏浏览器​​)。注意关闭杀毒软件实时防护以防安装包被误删。在此浏览器中访问你的靶场地址

2.使用旧版浏览器并启用Flash​​--安装旧版浏览器(如Chrome 88以下版本)。保已安装Adobe Flash Player并​​在浏览器设置中启用Flash​​(通常需要允许网站在"首先询问"或"始终允许"下运行Flash)。

3.加载一个Ruffle扩展

payload

bash 复制代码
http://127.0.0.1/xsslabs/level19.php?arg01=version&arg02=<a href="javascript:alert(1)">1</a>

​参数说明:​

arg01=version: 该参数名 version是Flash内部用于接收版本号或特定信息的变量名,是关键的回显点

arg02=<a href="javascript:alert(1)">点击我</a>: 此参数值是一个超链接,其 href属性包含JavaScript代码 javascript:alert(1)。当用户点击此链接时,就会触发XSS。

相关推荐
Larry_Yanan4 小时前
QML学习笔记(十七)QML的属性变更信号
javascript·c++·笔记·qt·学习·ui
真的想不出名儿5 小时前
vue项目引入字体
前端·javascript·vue.js
胡楚昊5 小时前
Polar WEB(1-20)
前端
吃饺子不吃馅6 小时前
AntV X6图编辑器如何实现切换主题
前端·svg·图形学
余防6 小时前
XXE - 实体注入(xml外部实体注入)
xml·前端·安全·web安全·html
jump_jump6 小时前
前端部署工具 PinMe
运维·前端·开源
Baklib梅梅7 小时前
优秀文档案例解析:打造高效用户体验的最佳实践
前端·ruby on rails·前端框架·ruby
慧一居士7 小时前
VUE、jquery、React、Ant Design、element ui、bootstrap 前端框架的 功能总结,示例演示、使用场景介绍、完整对比总结
前端
GISer_Jing7 小时前
0926第一个口头OC——快手主站前端
开发语言·前端·javascript