本文主要对XSS-labs靶场进行介绍,给出了我一步步怎么发现漏洞的过程。
目录
第一关
第二关
第三关
第四关
第五关
第六关
第七关
第八关
第九关
第十关
第十一关
第十二关
第十三关
第十四关
第十五关
第十六关
第一关
没啥好说的,直接干
<script>alert(1)</script>
第二关
随便输一下,没反应,ctrl+u看源码
发现在value里,闭合:
"><script>alert(1)</script>
第三关
随便输一下,然后看源代码:
发现把<>和"给编码了,那就不用尖括号,用onmouseover,注意闭合:
' οnmοuseοver='alert(1)
第四关
对于这种编码的,我们可以输入一个万能匹配:<script " 'Oonn>,看看它过滤了啥
发现<>干掉了,还是用onmouseover
" οnmοuseοver="alert(1)
第五关
还是<script " 'Oonn>先试
发现大写干掉了,并且字符 o 和 r 后面会加上 _
除了script和onmouseover,还可以用 <a href="javascript:alert:alert(1)">click</a>
"><a href="javascript:alert:alert(1)">click</a>
第六关
<script " 'Oonn>先试
还是一样,r 和 o加了_,但没过滤大写
"><scRipt>alert(1)</scRipt>
第七关
<script " 'Oonn>先试
发现,script和on直接干掉了,还过滤了大写
但是我们可以写两个on
" oonnmouseover="alert(1)
第八关
此题有一个友情链接,但我们还是<script " 'Oonn>先试
我们看哪个呢?这个友情链接自带href了,我们可以直接注入它然后点击来过关。
写 javascript:alert(1)
还是不行。这里还有一个新思路,对字符进行实体编码
转换网址:HTML字符实体转换,网页字符实体编码
实体编码HTML也能认,规则是 &#x + 16进制数 + ;
如 r 是 r
javascript:alert(1)
第九关
<script " 'Oonn>先试
直接不给机会,说不合法
这题有点刁钻,源码是说输入必须要有 'http://' 才行
javascript:alert('http://')
第十关
<script " 'Oonn>先试
好像都没啥用,但是有三个hidden标签
我们都一一赋值看看
发现 t_sort 是突破点
给 t_sort 赋值: <script " 'Oonn>
发现<>干掉了,那就 onmouseover
发现可以,那我们只要把hidden标签去掉就行
t_sort=" type="" οnmοuseοver="alert(1)
第十一关
发现和第十关一样,先试试突破点在哪:t_link=1&t_history=1&t_sort=1&t_ref=1
发现还在 t_sort,试试<script " 'Oonn>
发现 <>和双引号过滤了,这个思路断了,换一下。
发现一开始 t-ref 有一个value,referer是标识从哪里访问来的
要看refer,我们就要抓包然后加一个Referer字段试试:
发现已经有了
在Request包内添加 Referer: " type="" οnmοuseοver="alert(1)
第十二关
上一题是加Referer字段,那么这一题会不会同类型呢,看看源代码
果然,这次我们修改User-Agent字段:
成功!
在Request包内修改 User-Agent: " type="" οnmοuseοver="alert(1)
第十三关
此关同理,先查看源代码:
发现是要修改Cookie字段:
成功!
在Request包内修改 Cookie: user=" type="" οnmοuseοver="alert(1)
第十四关
十四关是通过源代码中的一个网址来上传带有XSS的exif图片来做
但这个网址挂了,这里就不演示了
图片的XSS这里可以改:
第十五关
十五关乍一看好像没啥,看看源码,有一个ng-include
这是用来嵌入别的网页的。我们来试试level1.php
发现第一关能用,第一关的get请求是name,输入<script " 'Oonn>看看屏蔽了什么。
尖括号和双引号都html转义了,那就用onmouse来做
可以写一个img标签插入到网页中:
鼠标放上去就成功过了。
src='level1.php?name=<img src=1 οnmοuseοver=alert(1)>'
第十六关
十六关发现给了一个test,改一改试试:
on还能用,并且发现在center标签内,那就还是上题的思路,做一个img放进去
发现空格被转义了。空格转义在HTML中可以用换行来表示,换行的URL编码为%0a
鼠标放上去即可成功。
keyword=<img%0Asrc=1%0Aοnmοuseοver=alert(1)>
最后四关都是跟flash有关,但flash已经挂了,这里就不演示了。
感谢你能看到这里o(* ̄▽ ̄*)ブ