XSSLAB破关详解


Level-1

 查看网页源代码发现本关采取get方式传提参数,为反射型XSS漏洞。且get到的参数在h2标签处未作处理。

 尝试将当作参数传递。提示闯关成功。

分析后端源代码可看出,开发者未对传进来的值做任何处理后直接显示在屏幕上

level-2

第二关从关卡可以看出,本关和第一关类似。也是使用get传参的反射型漏洞。

 尝试传递并查看源码,发现参数被双引号包围。

 可考虑将前引号闭合,后引号闭合,重铸js代码实现绕过。payload:test">//  第一个双引号与源码实现闭合,第一个右尖括号闭合input标签,双斜杠将后面的注释。

查看服务器后端源代码,可看出只是对传入的参数进行双引号闭合,可考虑添加双引号实现闭合后,重铸payload

 Level-3

尝试传入并查看源码后发现,对传入的代码进行了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改成sc_ript

传入'onmouseover=alert(0)发现也被替换。可能后台对输入的数据进行了过滤和处理。

 查看后端源码发现,后台对script和on做了处理。

 绕过思路:重新构造标签">click me!点击click me过关。

 level6

和第五关类似,未考虑大小写

 

 Level7和前两关类似,只过滤一次,可考虑重复关键词

 

 Level8:

本关卡中存在一个连接,表示使用了标签

查看网页源码发现: 传入的值到了两个地方。

尝试用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 题有问题(跳过))