【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代码会获取arg01和arg02参数的值,经过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。

相关推荐
随性而行3603 分钟前
企业微信API接口开发实战:如何实现消息回调接收与业务事件处理?
java·前端·python·微信·机器人·企业微信
℘团子এ9 分钟前
vue2中自定义指令的使用
前端·javascript·vue.js
计算机魔术师15 分钟前
微软Copilot安全机制被一个「句点」绕过了
前端
Data analyse45627 分钟前
用户路径SQL按会话起止时间聚合的方法
大数据·服务器·前端·数据库·人工智能·sql·数据分析
独孤九剑打醒他31 分钟前
【原创开源·2.0 版】太阳能水闭环氢能源汽车:动态制氢、动能回收与副产物商业闭环
前端·嵌入式硬件·汽车·硬件工程·能源
怕浪猫32 分钟前
腾讯又交作业了,开源版 WorkBuddy 太夯了!这回是只粉色小章鱼Octop!
javascript·面试·agent
小毛驴85034 分钟前
mvn help:effective-settings 与 mvn help:effective-pom
java·linux·前端
梦醒沉醉39 分钟前
8、正则表达式
javascript
志尊宝41 分钟前
AI原生前端开发(001):Cursor编辑器深度使用从入门到精通
前端·编辑器·ai-native
ZoeLandia1 小时前
TypeScript 07:工程化——import type、声明文件与 tsconfig
开发语言·前端·typescript