渗透学习-靶场篇-XSS-labs(持续更新中)


前言

在进行学习玩XSS的大部分基础知识后,以及初步完成一些简单的XSS测试后。接下里让我们开始对xss-labs进行攻略吧!! 不过需要注意的是,对于xss-labs我们只需大致了解一些思路即可,因为实战中,一般很少有这种弯弯绕绕的地方,不过可能在CTF中倒是会比较常见。


一、XSS-labs下载与安装

使用集成环境phpstudy。

xss-labs下载

下载后,直接解压到网站的根目录下就可以直接运行了!
在这里插入图片描述

二、靶场攻略

level 1

打开页面后,出现如下图,我们可以仔细观察到在url处有个参数name 以及 下面的payload长度4 刚刚好符合test的长度,因此,我们可以大致判断这里就可以进行xss的注入。
在这里插入图片描述

然后,我们在参数name下输入payload:

<script>alert(1)</script>

在这里插入图片描述

完成! 注意蛤,这里之所以不会弹出1 是因为xss-labs进行了检测,当我们能够正确注入时,xss-labs就会将弹出的内容进行替换!

level 2

这里,我们按照上述思路直接输入xss代码的话,是无法进行执行的。然后,我们来查看以下页面的布局,看看是否有其他的思路可以进行绕过:

在这里插入图片描述

由箭头,我们可以看出对应的关系!!! 这里,我们在输入框输入的xss语句虽然没被执行,但是其还是被带入到了value中的

因此,我们可以试想一下,这里既然已经嵌入在value= “ … ” 之中了,那我们是否可以利用闭合以及onclick属性进行点击执行呢?让我们动手试试看:

"onclick='alert(1)'>

在这里插入图片描述

通过查看页面布局,我们发现这里确实是已经构造完成了! 但是由于onclick属性的问题,我们需要在这里点击一下输入框,才能够触发这个漏洞:
在这里插入图片描述

完成,进入第三关!

level 3

在这里插入图片描述

我们仔细看一下,图中数据填入的地方。我们可以发现有两个问题:1、我们输入的> < 这两个符号都会被进行实体化;2、这里闭合回路的符号多出来了一个 "

然后,让我们在看一下第三关的源代码:
在这里插入图片描述

使用了htmlspeialchars 函数将特殊字符转化为html实体。

除此之外,发现这里确实利用了 ’ '来进行闭合回路,且对于输入的字符中又进行拼接了" " 。所以说我们那边闭合时才会多出一些符号。 那么要如何进行绕过呢?

这里我们需要清楚一点的是,在源代码中value的范围应该是 ’ … ’ 这之间的 , 这里由于" " 将会和输入的字符串一起作为value值的一部分。我们想要构造起能够执行的onclick,就必须把value的值进行闭合了,因此这里我们可以先输入一个’ 来进行将value的值闭合。。。 但是由于后门还会有一个’未进行处理,因此我们可以直接把这个当作闭合onclick的值的符号即可,也就是我们只输入了onclick = 'alert(1)

'οnclick='alert(1)

在这里插入图片描述

成功!为方便理解,我们在看一下输入后的页面源代码:

在这里插入图片描述
确实是闭合上了!! 至于这里连接的" 为什么不见了? 好吧我也不清楚,我猜测是html语言自己忽略了(如果有知道的欢迎指出) 反正呢,这里就是按着源码就可以直接用’ 进行将两边都闭合起来!!!

level 4

第四关,利用替换函数直接就将<>换成空了:
在这里插入图片描述
然后,查看一下源代码:
在这里插入图片描述

emmm,和上一关一样的意思。。。将上一关payload里的’ 换成"即可:

"οnclick="alert(1)

level 5

在这里插入图片描述

我们发现这里貌似将script进行了替换! 为了方便理解,让我们直接看源代码吧:
在这里插入图片描述
这里,php源码中首先进行了将所有都转为小写的操作。然后,在将script进行替换的操作!!! 因此,这里我们无法使用script这个标签了,但是我们可以使用其他的标签,比如超链接标签等,以下我们就来使用这个标签看看:

"><a href='javascript:alert(1)'>

输入完后,点击旁边那个蓝色的按钮就可以实现超链接跳转:在这里插入图片描述

在这里插入图片描述

level 6

第六关,我们发现还是对scriipt进行了替换,但是当我们转化一下大小写发现好像并不会过滤,因此我们可以直接利用大小写以及闭合进行绕过:

"><Script>alert(1)</Script>

在这里插入图片描述

level 7

这一关,为了学习的方便,我们直接看看源代码:

在这里插入图片描述

我们发现这一关将很多关键词都进行了替换!!! 看似毫无办法,但是这里却隐藏着一个逻辑上的bug。。这里由于,代码中的替换只执行了一次,未进行循环的的检测与替换,因此啊我们可以直接就利用双写进行绕过测试了:

"><scrscriptipt>alert(1)</scrscriptipt>

在这里插入图片描述

level 8

我们首先输入一串xss的脚本语句,然后发现呢!我们输入的东西最后都拼接到下面友情链接处了,因此这里我们只需要写入javascript:alert(1),就可以利用超链接进行跳转!

在这里插入图片描述

但是呢,由于代码中进行了替换,因此直接写入是不可取的!
在这里插入图片描述

于是,这里我们采取Unicode编码看看?
在这里插入图片描述

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

然后,再点击刚刚那个链接按钮:
在这里插入图片描述

level 9

我们先看看源码:
在这里插入图片描述

因此,这一关需要加上http:// (说实话这玩意,实战怎么可能有??? 不看代码这怎么想得出来???)

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;//http://

然后此时就可以绕过了:
在这里插入图片描述

level 10

来到这一关啊,我们一打开,首先发现的是这里没有输入框了!!! 既然如此,我们可以先看看页面的源代码布局,以此来看看是否有隐藏的变量在其中?

在这里插入图片描述

从图中可以看出,确实是有的!!! 那我们看看是否可以利用这个参数作为xss的切入点呢?

keyword=well done!&t_sort=" type="text" οnclick="alert(1)"

okok,注入完成!
在这里插入图片描述
在这里插入图片描述

level 11

这里,我们先查看一下页面源代码:
在这里插入图片描述
发现这有一个ref的变量,那么这里我猜想这可能似乎是数据包里的referer 。为了验证一下我的猜想,我们先打开源代码进行查看一下:

在这里插入图片描述

发现这里确实是读取了这个变量! 然后具体分析一下这个源代码中存在的问题:这里一共接收了三个参数,而其中的keyword与t_sort这两个参数呢,被进行了html实体化的处理,因此这里不太好进行注入。而,我们发现在这的referer变量却没有做这些过滤,因此可以初步断定这里存在着注入点!

referer: " type="text" οnclick="alert(1)"

在这里插入图片描述

然后就可以发现,我们已经注入成功了:
在这里插入图片描述

level 12

继续按上述的方法,进行查看一下页面的源代码:
在这里插入图片描述

这里啊,很明显是读取了user-agent的信息,因此,可以直接判定这里很可能存在着注入点:

User-Agent: " type="text" οnclick="alert(1)"

在这里插入图片描述

在这里插入图片描述

注入完成!!!

level 13

同理,这里我们直接查看:
在这里插入图片描述

大概猜这个cook变量应该是cookie的缩写:
在这里插入图片描述
然后,我们发现这里的cookie确实是存在着一个变量user,那我估计大概率就是这里,不管怎么样先试试看!

在这里插入图片描述
成功成功!

level 14

这里一开始呢,我尝试了很多次都没有成功。然后经过一番探查发现,这一关想考的是图片EXIF注入,也就是说当我们上传一个文件到本关卡中时,本关会读取图片的属性并写入到页面上,因此,我们就可以通过在图片的属性里写入脚本语句代码来进行XSS的注入!!

这里我主要参考了博主:3hex 的文章,然后利用该博主的方法建立了一个页面以此来进行模拟原本的关卡,在此十分感谢该博主大大!!! 原文链接在此处:[靶场] XSS-Labs 14-20 欢迎大家查看原博文!

好了,接下来我们先写入php代码:

<?php
   echo '
   <html>
    <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <title>欢迎来到level14</title>
    </head> 
   <center>
   <form action="level14-test.php" method=POST enctype=multipart/form-data>
   <label for=file>文件名:</label><input type=file name=file id=file><br>
   <input type=submit name=submit value=提交></form></center></html>';
 
    try{
        // 允许上传的图片后缀
        $allowedExts = array("gif", "jpeg", "jpg", "png");
        $temp = explode(".", $_FILES["file"]["name"]);
        $extension = end($temp);     // 获取文件后缀名
        echo $_FILES["file"]["type"];
        if ((($_FILES["file"]["type"] == "image/gif")
        || ($_FILES["file"]["type"] == "image/jpeg")
        || ($_FILES["file"]["type"] == "image/jpg")
        || ($_FILES["file"]["type"] == "image/pjpeg")
        || ($_FILES["file"]["type"] == "image/x-png")
        || ($_FILES["file"]["type"] == "image/png"))
       # && ($_FILES["file"]["size"] < 204800)   // 小于 200 kb
        && in_array($extension, $allowedExts))
        {
            if ($_FILES["file"]["error"] > 0)
            {
                echo "错误:: " . $_FILES["file"]["error"] . "<br>";
            }
            else
            {
                echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
            }
            move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);
        }
        else
        {
            echo "非法的文件格式";
        }
        $file = $_FILES["file"]["name"];
 
        $exif = exif_read_data($file, 0, true);
        echo "<h4>[ ".$file." ]的EXIF信息:</h4>";
        foreach ($exif as $key => $section) {
            foreach ($section as $name => $val) {
                echo "$key.$name: $val<br />\n";
            }
        }
    }catch (Exception $e){
        echo $e;
    }
?>

然后将该代码放入xss-labs的文件中,并命名:level14-test.php (注意:这里的文件名一定要和上面代码中跳转的文件名一致,否则不成功!)

在这里插入图片描述

然后,我们还需要开启php 的 exfi模块:
在这里插入图片描述

此时,就已经成功了!让我们访问看看,并上传一个文件看看:
在这里插入图片描述

okok,此时我们开始对图片进行写入脚本了:
在这里插入图片描述

然后,再上传一下看看:
在这里插入图片描述

成功!!!

level 15

这一关依旧有问题。。。。我们需要进行更正一下:本关考察的是angularJS包含,我们修改地址为:https://cdn.staticfile.org/angular.js/1.4.6/angular.min.js:

在这里插入图片描述

然后,直接输入网址:http://192.168.10.129:8080/xss-labs/level15.php 就可以进入第15关了:
在这里插入图片描述
然后看到图片底下这里有个src 的属性来加载图片的,emm,而且在之前的能够错误页面上,我们也能看出写端倪来:
在这里插入图片描述

因此,感觉这里应该是存在注入点!写入一些看看:
在这里插入图片描述
这里的ng-include相当于php的include函数,所以我们包含一个有XSS漏洞的URL就可触发这里的XSS。 于是进行如下的构造:

src='level1.php?name=<a type="text" href="javascript:alert(1)">'

点击下面那个按钮即可:
在这里插入图片描述

或者直接写入:

src='level1.php?name=<img src=yuan οnerrοr=alert(1)>'

level 16

当我们输入 语句后,发现这里貌似将空格进行了替换!!

在这里插入图片描述

那么,让我们仔细的来看看源代码中的内容吧:
在这里插入图片描述
发现这里确实是被进行了替换。。我们可以使用以下%0a来代替空格字符! 进行rul的编码绕过:

keyword=<img%0asrc=yuan%0aonerror=alert(1)>

在这里插入图片描述

level 17

这一关主要考查的是Flash XSS。 因此这里,我们利用其特性与闭合回路的思想进行xss注入:

level17.php?arg01=a&arg02=" onmouseover=alert(1)

在这里插入图片描述

注意这一关,是需要能够识别起flash插件的浏览器,比如本人在火狐上咋样都不可以,在谷歌上却成功了!!

level 18

与上面是同理的:
在这里插入图片描述

由于后面两关涉及过深的flash,已经超出目前我所学,暂时我就先不做了!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值