XSSLAB破关详解
Level-1
查看网页源代码发现本关采取get方式传提参数,为反射型XSS漏洞。且get到的参数在h2标签处未作处理。
尝试将<script>alert(0)</script>当作参数传递。提示闯关成功。
分析后端源代码可看出,开发者未对传进来的值做任何处理后直接显示在屏幕上
level-2
第二关从关卡可以看出,本关和第一关类似。也是使用get传参的反射型漏洞。
尝试传递<script>alert(0)</script>并查看源码,发现参数被双引号包围。
可考虑将前引号闭合,后引号闭合,重铸js代码实现绕过。payload:test"><script>alert(0)</script>// 第一个双引号与源码实现闭合,第一个右尖括号闭合input标签,双斜杠将后面的注释。
查看服务器后端源代码,可看出只是对传入的参数进行双引号闭合,可考虑添加双引号实现闭合后,重铸payload
Level-3
尝试传入<script>alert(0)</script>并查看源码后发现,对传入的代码进行了html编码。
查看后端源码:发现使用htmlspecialchars对输入的参数进行了html编码。无法使用
绕过思路:采用事件,需要闭合标签的属性
1:'onfocus=javascript:alert('xss') // (发送后需要点击下输入框)
通过burpsuite抓包结果。
2:'onclick='alert(0)(发送后需要点击下输入框)
3:'onmouseover='alert(0)
Level-4:
查看源码,发现和第三关类似使用了Html编码。
查看服务器源代码,发现使用了替换<>函数和html编码,并且用了双引号闭合。
绕过方法和第三关类似,不过闭合需要用双引号。例如http://192.168.8.222/xsslabs/level4.php?keyword="onmouseover="alert(0)。
Level5
传入<script>alert(0)</script>发现script改成sc_ript
传入'onmouseover=alert(0)发现也被替换。可能后台对输入的数据进行了过滤和处理。
查看后端源码发现,后台对script和on做了处理。
绕过思路:重新构造标签"><a href="javascript:alert(0)">click me!</a>点击click me过关。
level6
和第五关类似,未考虑大小写
Level7和前两关类似,只过滤一次,可考虑重复关键词
Level8:
本关卡中存在一个连接,表示使用了<a href=>标签
查看网页源码发现: 传入的值到了两个地方。
尝试用javascrpt:alert(0)发现script被修改,猜测后台做了过滤
尝试用事件登录on 也被修改了
查看源码发现大小绕过行不通,且无过滤关键字。
绕过思路:可将payload编码实现绕过。
Level 9和第八关类似
使用编码javascript:alert(0)后发现无效链接,
查看源代码发现使用了strpos函数过滤,输入的payload中必须要后http://字符
因此可构造payload:javascript:alert(0)//http://www.baidu.com 其中http:前的//必要,使后面的地址不生效。
Level10
第10关无输入关 直接网页源代码搞起
发现源代码中三个变量,依次尝试payload后发现均无显示。查询后端源代码
只有t_sort参数具备可变条件,但是类型为隐藏不见的,需要更改类型,且过滤尖括号,无法闭合。考虑事件
t_sort=" type="text" onmouseover="javascript:alert(0)
Level11(和第十关类似)
直接网页源代码搞起,发现有四个参数,而且都隐藏了,尝试用十关方法。无用,
查看源代码:发现t_ref为网页来源,绕过思路使用bp修改referer即可实现绕过。
Level12和前两关类似
网页源代码:发现请求头显示出来了 尝试修改请求头
Level 13 考cookie
Level14 题有问题(跳过))