当前位置: 首页 > news >正文

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

文章目录

  • 前言
  • 一、XSS-labs下载与安装
  • 二、靶场攻略
    • level 1
    • level 2
    • level 3
    • level 4
    • level 5
    • level 6
    • level 7
    • level 8
    • level 9
    • level 10
    • level 11
    • level 12
    • level 13
    • level 14
    • level 15
    • level 16
    • level 17
    • level 18


前言

在进行学习玩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,已经超出目前我所学,暂时我就先不做了!

相关文章:

  • 【SpringCloud】三、 分布式系统的延迟和容错
  • Ultra Fast Deep Lane Detection with HybridAnchor Driven Ordinal Classification
  • CodeChef 补题
  • k8s 污点和容忍
  • Rust(6):高阶函数和发散函数
  • 交换机与路由技术-30-标准ACL
  • 软件测试——基础篇
  • 使用 Sprinkles 构建您自己的类型安全版本的 Tailwind CSS
  • 【第十一章 Set接口概述,HashSet,LinkedHashSet,TreeSet】
  • C语言动态内存管理(malloc,calloc,free,realloc)
  • JavaScript数组去重的方式
  • console对象与控制台
  • JavaSE错题收集
  • 可复制的领导力-负面反馈流程及处理方式
  • 公众号网课查题接口系统
  • [译]CSS 居中(Center)方法大合集
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Android单元测试 - 几个重要问题
  • ES6之路之模块详解
  • IndexedDB
  • JAVA SE 6 GC调优笔记
  • JDK 6和JDK 7中的substring()方法
  • Next.js之基础概念(二)
  • Nodejs和JavaWeb协助开发
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Twitter赢在开放,三年创造奇迹
  • underscore源码剖析之整体架构
  • 关于Flux,Vuex,Redux的思考
  • 简单数学运算程序(不定期更新)
  • 坑!为什么View.startAnimation不起作用?
  • 前端面试之闭包
  • 我的业余项目总结
  • 字符串匹配基础上
  • Java总结 - String - 这篇请使劲喷我
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​Linux·i2c驱动架构​
  • #、%和$符号在OGNL表达式中经常出现
  • #{}和${}的区别?
  • #pragma pack(1)
  • #大学#套接字
  • (1)虚拟机的安装与使用,linux系统安装
  • (3)STL算法之搜索
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (全注解开发)学习Spring-MVC的第三天
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)母版页和相对路径
  • (转)平衡树
  • 、写入Shellcode到注册表上线
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core 2.1路线图
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .Net中的集合
  • ??javascript里的变量问题