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成功上传到服务器

回答: upload-labs第十一关是一个文件上传的挑战。根据引用\[1\]和引用\[2\]的内容,我们可以了解到在这个挑战中,我们需要利用%00截断来绕过文件上传的限制。当我们上传一个文件时,我们可以在文件名后面添加%00来截断后面的文件名,从而绕过后缀检测。此外,根据引用\[3\]的内容,我们还可以利用条件竞争来绕过文件重命名的限制。通过不断发送上传图片马的数据包,我们可以利用条件竞争的漏洞,使得程序来不及进行文件重命名,从而成功上传恶意文件。此外,还可以利用Apache服务器的解析漏洞,将上传的文件当做php文件解析,从而执行恶意代码。总之,通过利用%00截断、条件竞争和解析漏洞,我们可以成功绕过文件上传的限制,完成upload-labs第十一关的挑战。 #### 引用[.reference_title] - *1* [upload-labs-master 文件上传 第十一和十二关](https://blog.youkuaiyun.com/dd_c1d/article/details/119894881)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [文件上传upload-labs第十一至十九关](https://blog.youkuaiyun.com/qq_43480081/article/details/102553732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值