目录
一、测试环境
1、系统环境
渗透机:本机(127.0.0.1)
靶 机:本机(127.0.0.1)
2、使用工具/软件
火狐浏览器的hackbar插件,版本:2.3.1;
测试网址:http://127.0.0.1/xss-labs-master/leve116.php?keyword=
二、测试目的
实现基于get型的反射型xss攻击,构造payload绕过过滤方法。
三、操作过程
1、注入点寻找
进入页面发现,传参的参数是keyword
尝试注入<script>alert(1)</script>,发现script被过滤掉了
注入点在url,注入点是keyword参数
2、使用hackbar进行payload测试
使用大小写、双写绕过试试
<sCriPt>alert(1)</sCriPt>
大小写不行
<scrscriptipt>alert(1)</scrscriptipt>
双写也不行,但是可以看到script的闭合标签
经过不断尝试,发现输入空格可以使,script不被过滤,但是 / 也被过滤了,尝试其他payload吧
既然在页面中有显示,可以尝试html标签如a标签和img
尝试发现链接没生效
<a href="javascri pt:alert(1)">xss
查看源代码发现空格被实体化了
尝试给空格url编码一下
<a%20href=" javascri%20pt:alert(1)">xss
发现还是被编码过滤了
查找发现,可以使用%0d(回车符) %0a(换行符)
原理是:html标签换行也能解析
<a%0dhref=" javascri%0dpt:alert(1)">xss
url成功变蓝了,完成绕过
点击链接,成功弹窗
3、绕过结果
Script / 空格都被过滤,使用a标签绕过,空格符的平替还有%0d(回车符)和%0a(换行符)
<a%0dhref=" javascri%0dpt:alert(1)">xss
四、源代码分析
源代码,将script标签 / 空格转换为了空格的实体字符 
然后在页面进行输出,这时就没有过滤
五、结论
对用户的输入进行过滤了,但是不彻底,可以将标签分开写,中间加一个间隔符就绕过。间隔符过滤也不彻底,只过滤了空格,忽略了换行符、回车符。
标签:xss,测试报告,标签,labs,过滤,绕过,源代码,空格 From: https://blog.csdn.net/2301_79698171/article/details/143196974