xss-lab靶场详解

xss-lab靶场详解

pass1-pass4在上一篇博客中已经写过,便不再赘述

1.pass 5

来到第五题,先直接输入测试语句:

<script " ' Oonn>

在这里插入图片描述

查看源码,发现两个标签中间被插入了字符,尖括号和引号都没有被过滤或转义,同时还可以看出语句了采用双引号闭合

所以我们构建payload时要先在开头加一个">将input标签的<给闭合掉,末尾也需要加一个<"把input剩下的尖括号闭合掉,中间加入我们正常的注入代码即可:

注意:script标签和onblur标签是无法使用的

"><a href="javascript:alert(/xss/)">click me!</a><"

在这里插入图片描述

成功注入

2.pass 6

依旧是先输入测试语句查看过滤逻辑:
在这里插入图片描述

仍然是两个标签中间被插入了字符,尖括号和引号都没有被过滤或转义,同时还可以看出语句了采用双引号闭合,继续使用上一关的a标签注入
在这里插入图片描述

发现href属性中间也插入了下划线,尝试使用大小写绕过:

"><SCript>alert(/zbpyy/)</SCript><"

在这里插入图片描述

注入成功

3.pass 7

继续使用测试语句注入:
在这里插入图片描述

script被过滤,同时on也被过滤了一次,尖括号,单双引号都没进行处理,同时语句采用双引号闭合

所以我们采用双写绕过:

"oonnmouseover="alert()

在这里插入图片描述

这里使用的是onmouseover 事件,这个事件发生在鼠标指针移动到元素或它的子元素上时

4.pass 8

输入测试语句:
在这里插入图片描述

结果在十七行发现尖括号被转义,双引号被转义,单引号没变,关键字没变,同时,语句采用双引号闭合方式
在这里插入图片描述

在二十行发现参数被传递到a标签的herf属性中,尖括号被转义回来,双引号还是被转义,关键字script和on被插入下划线,单引号依旧没变

所以我们尝试在标签a的herf属性中进行注入,由于herf标签会对script插入下划线,所以我们使用ASCII编码进行绕过

在这之前需要了解jsp的伪代码:

  • 我们为<a>标签增加href属性,一般有两个目的:

    • 跳转到指定的页面,也就是:link选择器可以选择到它
    • 有href属性的<a>标签才有cursor:pointer的效果,特别实在低版本浏览器里面
  • 下面是不想要<a>标签跳转到实际页面的几种方法:

    • <a href="#"></a>

      点击这个链接后,会让页面跳到页面顶部,在location.href后面增加#号

    • <a href="#none"></a>

      点击这个链接后, 如果页面里面有id为none的元素,会执行锚点机制跳转到这个元素上缘

    • <a href="###"></a>

      不跳转,可以阻止默认的跳转行为,但是这个在后端代码中容易识别成注释

    • <a href=“javascript:”></a>

    • <a href=“javascript:;”></a>

      是把javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面

所以我们要使用<a href=“javascript:”></a>来进行注入,构造payload:

javas&#x63;ript:alert(/zbpyy/)

在这里插入图片描述

注入成功

5.pass 9

依旧是注入测试语句,分析过滤原则
在这里插入图片描述
在第17行中发现,我们可以看到尖括号被转义,双引号被转义,单引号没事,关键字也没事,大写变小写,同时语句采用双引号闭合

在第20行中发现,参数被传递到herf参数中,但此处显示链接不合法,没有说具体怎么不合法,我们需要去试错
在这里插入图片描述

尝试使用上一关的payload注入查看回显

依旧显示链接不合法

由于回显中是链接不合法,所以尝试在前面加入http://
在这里插入图片描述

发现链接合法,输入的参数也赋给了herf,但是http在开头的话会导致我们的代码无法执行,所以尝试将其放在代码内部,构建payload:

javas&#x63;ript:alert('http://')

在这里插入图片描述

成功注入

6.pass 10

进入界面发现没有输入框进行注入,观察url,发现注入点为get直接传参,输入测试语句
在这里插入图片描述

发现第15行中的尖括号被转义,双引号被转义,单引号没事,关键字也没事,大写没有转化为小写,同时语句为双引号闭合
在这里插入图片描述

另外在第17,18,19行,发现另外三个隐藏输入参数,分别是:t_link,t_history,t_sort

分别将测试语句注入三个参数,观察过滤原则:

t_link,t_history两个值无法传入参数

t_sort中尖括号被过滤,其余没事,参数采用双引号闭合

由于<>被过滤,所以考虑不带尖括号的事件进行注入,构建payload:

"onmouseover="alert(/zbpyy/)

在这里插入图片描述

发现事件无法触发,导致注入失败,修改payload:

"type="button"onmouseover="alert(/zbpyy/)

加入"type="button"修改type属性为按钮方便事件触发
在这里插入图片描述

当光标移至按钮时,注入成功

7.pass 11

依旧是get传参,输入测试语句
在这里插入图片描述

发现第15行中尖括号和双引号都被转义、单引号没事、关键字没事,大写没有转化为小写,同时语句采用双引号闭合

另外在第17,18,19,20行,发现另外四个输入参数,分别是t_link、t_history、t_sort、t_ref

分别将测试语句注入四个参数,观察过滤原则:

当给t_link,t_history和t_ref三个值无法传入参数
在这里插入图片描述

t_sort中尖括号和双引号都被转义、单引号没事、关键字没事,大写没有转化为小写,同时语句采用双引号闭合

由于语句采用了双引号闭合和双引号过滤,所以没办法通过t_sort和keyword两个值进行注入

所以考虑其他值,由于直接传参不显示,可能是因为不是get传参,使用hackbar尝试post传参
在这里插入图片描述在这里插入图片描述

尝试之后依旧无法显示,猜测可能是有可能是http的头部信息,所以使用burp抓包查看
在这里插入图片描述

在burp中host下加入一句referer:<script " ’ Oonn>,之后放包查看源代码
在这里插入图片描述

发现成功传入了t_ref的值,并且没有任何过滤,构建payload:

referer:"type="button" onmouseover="alert(/zbpyy/)

在这里插入图片描述

页面出现按钮,聚焦后成功注入

8.pass 12

输入测试语句
在这里插入图片描述

在第15行可以发现,尖括号和双引号被转义,单引号没事,关键字也没事,大写没有转化为小写,同时可以发现语句采用双引号闭合

在第17,18,19,20行发现四个输入参数,分别是t_link,t_history,t_sort,t_ua

由于语句也采用了双引号闭合和双引号过滤,所以猜测与上一题思路一致,同时看到t_ua后面的值,属于User-Agent参数,所以使用brup修改头文件来进行注入
在这里插入图片描述

修改http请求头消息,将拦截到的请求修改User-Agent参数为<script " ’ Oonn>,发送后查看源码
在这里插入图片描述

发现只过滤了尖括号,构建payload:

User-Agent:"type="button" onmouseover="alert(/zbpyy/)

在这里插入图片描述
在这里插入图片描述

页面出现按钮,聚焦后成功注入

9.pass 13

输入测试语句
在这里插入图片描述

在第15行中可以发现,尖括号和双引号都被转义,单引号和关键字没事,大写没有转化为小写,同时语句采用双引号闭合

在第17,18,19,20行发现四个输入参数,分别是t_link,t_sort,t_history,t_cook,

由于语句也采用了双引号闭合和双引号过滤,所以猜测t_cook参数应该是通过cookie进行注入
在这里插入图片描述

修改http请求头信息,将请求中cookie参数中的user值为<script" ’ Oonn>,发送后查看源码

发现还是只过滤了尖括号,构建payload:

user="type="button" onmouseover="alert(/zbpyy/)

在这里插入图片描述

页面出现按钮,聚焦后成功注入

10.pass 14

11.pass 15

输入测试语句
在这里插入图片描述

在16行中可以发现我们的值被传入到了<span>标签中,其中尖括号和双引号都被转义,单引号和关键字没事,大写没有转化为小写,同时语句采用双引号闭合

在<span>标签中,ng-include 指令用于包含外部的 HTML 文件,包含的内容将作为指定元素的子节点,ng-include 属性的值可以是一个表达式,返回一个文件名

我们可以尝试包涵第一关,输入语句:

要注意的是:ng-include,如果单纯指定地址,必须要加引号

?src='level1.php'

在这里插入图片描述

这里已经成功将第一关给包含进来了,那么就可以根据第一关来构建payload:

要注意的是span标签中的过滤原则

?src='level1.php?name=<img src=1 onmouseover=alert(zbpyy)>'

聚焦出现的图片成功注入

12.pass 16

输入测试语句
在这里插入图片描述

在15行中可以发现将将script替换成了空格,最后将空格给实体化了,同时大写变成了小写,其余符号没变

所以想到使用其余标签注入,构建payload:

?keyword=<img src=1 onmouseover=alert(/zbpyy/)>

由于这道题将空格给实体化了,所以我们需要将空格提前进行urrl编码来绕过实体化,也就是使用%20来代替:

?keyword=<img%20src=1%20onmouseover=alert(/zbpyy/)>

发现依旧被实体化了,所以想到空格可以用回车来代替,回车的url编码是%0a,继续改进payload:

?keyword=<img%0Asrc=1%0Aonerror=alert(1)>

在这里插入图片描述

注入成功

13.pass 17

由于edge浏览器不支持flash插件,所以我们这里采用修改后端代码的方式来解决。将后端第十七关的代码(level17.php)指向的swf文件改为index.png,就可以正常显示了
在这里插入图片描述

输入测试语句
在这里插入图片描述

在17行中发现,传入的参数都出现在了embed标签中,并且将双引号和尖括号进行了转义,其他没变,构建payload:

?arg02= onclick=alert(/zbpyy/)

在这里插入图片描述

点击后出现弹窗,注入成功

14.pass 18

源码跟上一关差别不大,就是换了个swf文件,构建payload

?arg02= onclick=alert(/zbpyy/)

在这里插入图片描述

出现弹窗,注入成功

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值