xss-labs-master靶场链接:https://pan.baidu.com/s/1X_uZLF3CWw2Cmt3UnZ1bTw?pwd=gk9c
提取码:gk9c
xss-labs level 1修改 url 地址中的name=<script>alert(1)</script>,便可以通关

level 2 在搜索框中输入的 JS 代码无法执行

查看网页源码可以发现表单提交的参数被存储在了value属性中

修改闭合方式来闭合value值,插入 js 代码便能执行
"><script>alert(1)</script>

level 3 和上一关的情况差不多,输入值包含在value属性中
测试发现">无法闭合属性值,可能是符号被转义

构造 poc 对响应包中的value属性进行闭合,提交后再次点击搜索框便会弹出弹窗
' οnclick='alert(1)

level 4 查看第四关响应包,可以发现后台对尖括号<>进行了过滤
箭头 2 处却是把<和>删除了但是,事件触发却不需要使用这两个符号。
直接使用事件闭合,注意这关的闭合符为双引号,提交后点击搜索框便会弹窗
" οnclick="alert(1)
" οnfοcus=javascript:alert('xss') "

level 5 查看响应包,可以发现<script>标签中被添加了一个下划线,变成了
<scr_ipt>,导致 JS 代码无法别识别

可以不使用<script>,使用链接标签中的javascript:伪协议来执行 JS 代码,点击插入的链接便会弹窗
"><a href="javascript:alert(1)">
"> <a href=javascript:alert('xss') > <"

level 6 和上一关类似,这次除了<script>标签,<a>标签的href值也会插入一个下划线
而且<img>标签的src属性和onerror属性也会被插入下划线

通过大小写转换可以绕过过滤
"><a hrEF="javascript:alert(1)">

level 7 查看响应包,可以看到后台对script字符串进行了过滤
通过双写script字符串可以绕过过滤
"><scscriptript>alert(1)</scscriptript>

level 8[编码绕过]
从响应包可以看出,系统对表单中的双引号、尖括号进行了转义,在script字符串中插入了下划线(<和>被编码在 href 属性值中script字符被插入了_字符破坏语义)

构造 poc 插入<a>标签的href标签中,利用伪协议执行 JS 代码弹窗:
javascript:alert(1)
将 poc 进行 HTML 实体编码后提交,点击链接后便会弹窗
https://config.net.cn/tools/HtmlEncode.html
javascript:a

8;ert(1)

用来闭合引号的引号也被编码。
onfocus 一类的事件也被破坏尝试大小写绕过,也失败我们可以将要提交的 js 代码转成实体
level 9[检测关键字]用第 8 关的方式说链接不合法弹框的信息里面包含http://就可以了

提交的参数值插入到了标签的 value 属性值中
但是在标签的 href 属性中却并没有出现该参数值,
而是显示的 "您的链接不合法?有没有!"这样的字符串。
有可能是将我们的代码进行了过滤
只有包含正常的 url 地址才能添加到 href 属性值中构造一个有正常 url 地址的恶意代码:

javascript:alert('xsshttp://')
弹框的信息里面包含http://就可以了
