在打靶场之前可以先了解一下XSS
浅谈XSS-CSDN博客
目录
level1
直接输入
<script>alert()</script>
level 2
观察源码可知,需要实体化,则输入
"><script>alert()</script><"
level 3
可以看到,被实体化了,利用标签事件。然后查看靶场源码可知(到搭建好的靶场的文件里找),发现
此时需采用htmlspecialchars()绕过方法,默认是不编码单引号的,所以用单引号闭合,以下两个都可以(但不只这两种方法)
'onclick='alert()''
'onfocus='alert()''
输入之后点击搜索之后再点击一下搜索框即可
level 4
与第三题类似,将单引号改为双引号即可
level 5
观察源码可知on被过滤。
事件关键字被过滤,利用其他标签,比如a标签
"><a href='javascript:alert(123)'>
然后点击搜索并点击出现的a标签即可
level 6
可知仍然过滤了on,
a标签中的href也被过滤,此时尝试大小写绕过,输入
"><sCript>alert()</sCRipt><"
即可通关
level 7
观察可知将script、on等字母转变为空格,此时可以双写绕过,输入
"><scscriptript>alert()</scriscriptpt><"
答案不止一种,用a标签等双写绕过也可
level 8
这一关发现加其他标签,双写大写绕过都不行了,此时可以尝试编码绕过
输入javascript:alert(123)编码转换(其他的也可以),得
javascript:alert(123)
之后点击友情链接即可通关
level 9
仍然采用编码绕过(内容检测)
试着输入一个链接(https://或者http://类型),发现http://类型可以
可以看到此处有显示,则对http://类型链接进行编码
输入
javascript:alert(123)//http://
此处对//http://前的内容进行编码,不能对http://编码,不然通关不了
level 10
第十关是在上方网址栏输入,发现前面方法好像不太行了,观察页面源码发现
有三个隐藏的输入框
在网址栏尝试赋值,发现第三个输出
可以利用这个来通关靶场
在kayword=后面输入a&t_sort='"onclick='alert(123)'发现仍然没有输出,试着将type改变
则输入
a&t_sort='" type='text' onclick='alert(123)'
点击弹出的输入框即可
level 11
与第十关类似,利用refer注入。
试着给每个赋值,仍然是t_short被赋值,按照第十关输入后发现没有闭合掉value属性,说明单双引号被htmlspecialchars处理
观察源码可知t_ref(看到这个单词有点像referer请求)是由第十关直接跳转过来的
这时候用一下抓包,回到第十关在跳转到第十一关的时候抓一下包
将图示部分改变一下,改成和第十关一样的payload,然后放行,此时第十一关出现一个搜索框,点击此框即可通关
level 12
观察源码可知和第十一关有点类似,抓包一下,是user-agent请求头
将图示部分改为和第十关一样的payload即可
level 13
和上面类似,抓一下包
将右侧框柱地方改为第十关payload即可
level 14
这关题有错误,就直接pass了
level 15
观察源码可知
出现这个,查阅之后可知此指令用于包含外部的HTML文件
由此可以有一个思路就是把已通关的XSS靶场网址带入其中
将第一关网址带入发现没什么反应,有可能是过滤掉了script,此时更改标签,在第一关位置输入
<img src=1 onerror=alert(123)>
将通关后的第一关网址复制到第十五关网址(输入?src='')单引号里面
即可通关
level 16
将第十五关所用代码再次输入网址查看得
<img src=1 onerror=alert(123)>
被实体编码了
&nbst是空格(这个可以去查看一下实体编码表),说明空格都被处理了,但是单双引号那些没被处理
这时候可以把空格换成回车键(这是不能在网址上直接敲的),需要将回车键编码
%0A
将上述代码的空格键全部替换为编码后的回车键即可
level 17
第十七关采用了一个embed标签,这个现在不怎么用了,了解一下就行
输入
'onmouseover=alert(123)
level 18
和第十七关一样
level 19 20
这两关涉及到flash触发的XSS漏洞,现在flash停用了,所以不做了