目录
前言
XSS漏洞又名跨站脚本攻击,是web安全漏洞之一,攻击者在网页中通过各种方式嵌入恶意javascript代码,而受害者一旦访问到带有恶意javascript代码的网页,就会导致受害者的浏览器执行恶意javascript代码,导致cookie泄露等严重危害
xss-labs靶场前十关比较贴合现代web安全漏洞场景,因此只将1-10关列出
level1
简单无过滤的xss
html
<script>alert(1)</script>


level2
沿用第一关的payload发现不行

f12查看源码,发现他将我们输入的放在了属性值里,因此闭合就行
html
"><script>alert(1)</script>

level3
沿用第二关的payload发现不行,f12查看源码发现他将<>和"实体化编码了

但是对单引号'没有实体化,因此可以使用单引号闭合,添加on事件触发xss,并且结尾加//注释原有的引号
html
1' onfocus=alert(1)//

level4
沿用第三关的payload,发现不行,查看源码发现是用双引号闭合而我们使用单引号

因此将单引号换成双引号即可
html
1" onfocus=alert(1)//

level5
沿用第四关的payload,发现不行,查看源码,发现on被过滤,这里过滤的是on并不是onfocus这个事件,因为用onclick等on事件都不行

这里先使用1">测试尖括号有没有过滤,发现对尖括号>没有过滤

这里就可以使用a标签的href属性,添加javascript伪协议即可绕过
html
1"><a href=javascript:alert(1)>

level6
沿用第五关的payload,发现不行,查看源码发现href被过滤

但是这里只过滤小写的href,使用大小写绕过即可
html
1"><a hREf=javascript:alert(1)>

level7
沿用第六关的payload,发现不行,查看源码,发现href和script被删除了

使用双写即可
html
1"><a hRhrefEf=javascscriptript:alert(1)>

level8
沿用第六关的payload,发现不行,查看源码发现将我们输入的直接放到了a标签的href属性中,并且将script过滤了,大小写绕过不行

因此可以在script中添加一个%0a换行符绕过,这样就匹配不到script但是浏览器依然会执行href属性
html
javasc%0aript:alert(1)

level9
沿用第八关的payload,发现不行,查看源码,显示链接不合法

这里经过测试,只需要链接中包含http://即可,在任意位置都可以,因此我们在结尾添加http://,并且在他之前添加//注释即可
html
javas%0acript:alert(1)//http://

level10
输入测试语句,查看源码,发现并没有回显,但是发现了三个input输入框但是被隐藏了

因此,我们可以在url中主动添加上这三个参数
html
keyword=123&t_link=123&t_history=123&t_sort=123

发现t_sort这个参数将值添加到value中,因此可以在这里测试xss,由于这个input是隐藏的,所以可以给他添加一个autofocus属性让他自动获得焦点而自动触发onfocus属性
html
keyword=123&t_link=123&t_history=123&t_sort=123" onfocus=alert(1) autofocus>
但是这里没出发,查看源码

发现后面还有拼接一个双引号,因此我们先给一个随意属性在添加autofocus
html
keyword=123&t_link=123&t_history=123&t_sort=123" onfocus=alert(1) test autofocus=>
