upload-labs之第一关

一、靶场简介

upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。

  • 靶场安装

由于upload-labs 是一个由php 语言编写的靶场,因此需要在php环境下进行使用。我这里推荐用phpstudy集成环境。

靶场项目地址:GitHub - c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场

将源码下载下来之后,在www目录里面新建一个文件夹来存放。

然后直接在浏览器打开即可

本文先详细讲解一下第一关,后续文章中有些相关操作就会一笔带过了。

Pass-01

我们打开第一关可以看到一个上传点

既然说了选择上传的图片,那么我们先上传一张正常的图片试试。这里我准备了一张测试用图

 

直接选中

然后点击上传

上传成功后不仅页面会有显示,在网站目录的upload文件夹下也会多出来刚刚上传的图片

正常图片可以上传,那么我们直接上传一句话木马试试(一句话木马的相关知识请自行了解)

 

图中文件就是php一句话,点击上传却发现无法上传

 

弹出错误:该文件不允许上传,请上传.jpg|.png|.gif类型的文件,当前文件类型为:.php

无法直接上传shell,那么肯定是有检测手段咯,查看提示我们可以知道,第一关是用的js前端校验

既然是js前端校验,那么我们就来看看源代码,瞅瞅js都做了什么

可以看到js定义了一个白名单,只允许上传.jpg|.png|.gif格式的文件,并且对上传文件的后缀名同白名单做了对比校验。
 

 
对于js校验,我了解的有三种方式可以进行绕过
  1. 删除js校验代码
  2. 更改js校验中的白名单
  3. 先改文件后缀名通过js校验再抓包更改后缀上传至服务器
 
 

下面对三种方式进行详细的讲解

  1. 删除js校验代码

我们既然知道了是什么在阻止我们上传shell,那么干掉它不就可以了吗?

通过审查元素我们可以发现上传这里是调用了checkFile函数的,那么我们先找到这个函数(肯定是在script标签里,不要问为什么)

往下翻我们在最后一个标签中看到了这个函数,接下来就是对它的校验功能进行删除了

删除之后在进行上传发现成功了。

二、更改js校验中的白名单
 

同样是对js代码进行操作,只不过不同于上面的直接删除,这里是在js校验的白名单中把php文件格式添加上

修改之后同样可以绕过js检测。

  • 先改文件后缀名通过js校验再抓包更改后缀上传至服务器

这种方式稍微复杂一点,对小白选手来说,我尽量写得详细些。

这里值得说一下的是,我们的浏览器在向服务器请求带有上传点的这个页面,并且服务器返回了页面内容之后,它们之间的连接就断开了。js检测完全就是浏览器本地的行为。当选择的文件在浏览器检测允许上传之后才会上传至服务器,如果检测不通过不会和服务器有任何的数据交互。

第三种方法就是先把shell的后缀名修改为浏览器js校验允许的类型

这里我修改成了png格式。然后对浏览器进行抓包分析。点击上传按钮之后浏览器会先进行js校验,通过后才会将数据发向服务器

因为shell的后缀名是修改为了png格式的,所以可以通过检测,这里抓到的数据包可以看到浏览器向服务器上传的的文件后缀还是png格式,我们只需将它改为php格式的,就可以将shell成功上传到服务器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值