upload-labs通关历程
使用靶场前,先配置php版本为5.2,和下列对应配置。

php.ini
magic_quotes_gpc Off
php<5.3.4
httpd.conf
AddType application/x-httpd-php .php .phtml .php1 .php2 .php3 .php4 .php5 .php6 .php8 .php9 .htaccess .phP .Php
Pass1: 前端js过滤拦截,直接一句话木马更改后缀名为jpg,抓包修改包中的一句话木马的后缀为php即可完成绕过并且上传。
Pass2:①源码中可以看出增加了对文件类型的一个判断和传输,上传木马1.php.png,抓包修改后缀名即可。②直接上传php为后缀的木马,抓包修改Content-Type: application/octet-stream为Content-Type: image/gif 或png或jpeg都可以绕过并且上传。
Pass3:根据源码内容可以发现这次的过滤规则采用了黑名单的机制。通过分析源码得知一些危险的脚本解析文件后缀并没有得到过滤。可采用更改后缀名为php1或php2或php3即可绕过并且上传。
Pass4:根据源码内容发现采用了黑名单规则,并且比起pass3,过滤掉的后缀名规则更多更完善,但是它并没有过滤掉.htaccess,可更改webshell文件后缀为htaccess即可绕过并且上传。
Pass5:根据源码发现htaccess后缀名也被设为黑名单。根据源码对应的过滤规则得出payload为.php. .,抓取数据包后在在文件名末尾加上点空点即可进行过滤。
Pass6:根据源码内容发现没有过滤规则为文件名是否为大小写,将webshell文件的后缀名改为大写,即可绕过并且上传。
Pass7:根据源码内容,发现过滤规则并没有对文件名末尾的空格进行过滤,抓取数据包,在webshell文件名末尾加上空格,即可绕过并且上传。
Pass8:根据源码内容,发现过滤规则并没有对文件名末尾的点进行过滤,抓取数据包,在webshell文件名末尾加上点,即可绕过并且上传。
Pass9:根据源码内容,发现过滤规则并没有对::$DATA进行过滤,抓取数据包,在webshell文件名末尾加上::$DATA,即可绕过并且上传。在使用webshell连接工具连接时须要删除::$DATA后才可以正常连接,因为在windows中文件名规则中::$DATA是会被丢弃掉的。具体www.baidu.com。
Pass10:和pass5一样的规律,可以. .方式进行过滤。
Pass11:根据源码内容发现了这次时对关键字的直接替换为空(空值),可通过算双写绕过法,webshell文件名为1.pphphp即可绕过并且上传。
Pass12:通过源码发现该点是利用了白名单的上传法,使用的是get的方法进行对数据的一个传参。并且通过save_path文件进行传参,内容中发现有”/”和$file_ext说明该参数为可控的。可采用%00截断法,通过抓取数据包,更改save_path=../upload/ 为 save_path=../upload/1.php%00,即可绕过并且上传。
Pass13:和pass12一样是使用的是白名单,但是这边采用的是post的传参方式,也一样通过%00截断的方式,但是在这儿要对%00先进行一个编码,抓取到数据包后,,它的传参地方是在下面,和pass12不一样,更改save_path=../upload/ 为 save_path=../upload/1.php%00,选中%00,右击convert selection>url>url_decode,即可绕过并且上传webshell。
Pass14:根据提示说须要文件包含漏洞的方式并且上传.jpg.png.gif三种后缀的webshell才可过关,通过御剑进行对upload-labs进行扫目录,发现一个include.php文件,打开发现该文件用于测试图片马的,通过源码分析得到include.php是以file参数进行传参,更改webshell文件名为图片的后缀名,复制连接得到自动更改的文件名,得到payload 为http://192.168.43.204/upload-labs/include.php?file= 4520201217222329.gif,通过webshell连接工具即可过关。
Pass15:根据源代码发现该过滤规则是检查文件的前两个字节,更改webshell文件的后缀名为gif,在webshell文件中添加GIF89即可绕过并且上传。再利用文件包含即可绕过并且上传。
Pass16:上传文件后发现无法上传,这里直接拉一张图片来做图片马,经过测试图片马可用,上传后发现无法连接到shell,通过源码发现每上传一次图片则都会生成另外一个图片,通过上传webshell,进行对比,发现webshell语句已经没了,尝试正常文件上传一次,将上传成功的图片进行下载下来,制作成图片马再次上传,发现依旧无法,直接用网络中某位大神的脚本。
Pass17:通过源码发现过滤规则是先以move进行判断,符合白名单的就重命名,不符合的就unlinke进行删除,可以利用竞争条件,不断发送php webshell一句话木马,直到成功访问,以webshell连接工具连接成功即可过关。
Pass18:和pass17同样是先move再rename,继续竞争条件但是有白名单,要利用解析漏洞或文件包含,如果文件名简单可以尝试爆破,这里难以爆破文件名。所以利用apache解析漏洞,传1.php.rar 因为rar并不会被解析,可以改为7z。
Pass19:根据源码发现是一个黑名单过滤的方式,抓包,再webshell下面进行更改,可以以大小写、./、. .、::$DATA进行绕过
Pass20:通过源码发现该过滤方式是以explode()函数把字符串打散为数组,end() 函数将数组内部指针指向最后一个元素,并返回该元素的值(如果成功),这里是取post参数数组中的最后一个文件名。reset() 函数将内部指针指向数组中的第一个元素并输出。可控点为save_name。save_name[3]=conn19.php,save_name[5]=jpg,$ext=jpg过白名单,
reset($file)=conn19.php $file[1]=nul,就成功上传conn19.php.(多出个点但是windows自动去掉了没影响)。还可以尝试,1=conn19,2=php,3=jpg,或者Pass19的00截断,0=conn19.php(0x00),1=jpg
upload-labs通关历程的更多相关文章
- SUCTF 2019 Upload labs 2 踩坑记录
SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...
- Upload - Labs (下)
Pass - 11: 1.查看源代码,发现进行了一次对后缀名替换成空格,因此考虑双写绕过, 2.上传成功, 关键代码: $is_upload = false; $msg = null; if (iss ...
- Upload - Labs (上)
Pass - 01: 1.尝试上传一个php文件:aaa.php,发现只允许上传某些图片类型,用bp抓包,发现http请求都没通过burp就弹出了不允许上传的提示框,这表明验证点在前端,而不在服务端 ...
- XSS-change通关历程
Level1:没有过滤. <script>alert(1)</script> <svg/onload=alert(1)> <script>confirm ...
- Upload-labs通关指南(上) 1-10
Upload-labs 所有文章和随笔(随笔将不于csdn更新)将于我的个人博客(移动端暂未适配)第一时间更新. 一些网站存在文件上传接口,一旦存在这个接口就有可能存在漏洞. 文件上传漏洞的逻辑是将一 ...
- [web安全原理分析]-文件上传漏洞基础
简介 前端JS过滤绕过 待更新... 文件名过滤绕过 待更新 Content-type过滤绕过 Content-Type用于定义网络文件的类型和网页编码,用来告诉文件接收方以什么形式.什么编码读取这个 ...
- [原题复现+审计][SUCTF 2019] WEB CheckIn(上传绕过、.user.ini)
简介 原题复现:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn 考察知识点:上传绕过..user.ini 线上平台:h ...
- buu学习记录(上)
前言:菜鸡误入buu,差点被打吐.不过学到了好多东西. 题目名称: (1)随便注 (2)高明的黑客 (3)CheckIn (4)Hack World (5)SSRF Me (6)piapiapia ( ...
- DVWA File Upload 通关教程
File Upload,即文件上传.文件上传漏洞通常是由于对上传文件的类型.内容没有进行严格的过滤.检查,使得攻击者可以通过上传木马获取服务器的webshell权限,因此文件上传漏洞带来的危害常常是毁 ...
随机推荐
- windows10 WSL
搭建WSL linux下的home目录,映射windows的目录地址 用户家目录 ➜ ~ pwd /home/ajanuw C:\Users\ajanuw\AppData\Local\Packages ...
- 代码生成器 springboot架构
import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.IdType; ...
- 模拟web服务器 (小项目) 搭建+部署
模拟web服务器:可以从浏览器中访问到自己编写的服务器中的资源,将其资源显示在浏览器中. 技术选型: corejava 线程池 同任务并发执行 IO流 传递数据 客户端也会像服务端发送数据, 服务器像 ...
- 微信小程序:数组拼接
一开始用concat进行拼接,总是不行,代码如下: handleItemChange(e){ console.log(e) var itemList = e.detail.value itemList ...
- 痞子衡嵌入式:盘点国内RISC-V内核MCU厂商
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内RISC-V内核MCU厂商. 虽然RISC-V风潮已经吹了好几年,但2019年才是其真正进入主流市场的元年,最近国内大量芯片公司崛起 ...
- docker方式部署禅道
一.概述 使用docker方式部署禅道简单,快速,不容易出错.比起编译安装要方便很多. 二.部署 环境说明 操作系统:centos 7.6 ip地址:10.212.82.65 docker版本:19. ...
- javascript处理HTML的Encode(转码)和解码(Decode)
HTML的Encode(转码)和解码(Decode)在平时的开发中也是经常要处理的,在这里总结了使用javascript处理HTML的Encode(转码)和解码(Decode)的常用方式 一.用浏览器 ...
- [通达OA] RCE + Getshell
跟着大佬轻松复现:https://github.com/jas502n/OA-tongda-RCE 通达OA下载:https://www.tongda2000.com/download/2019.ph ...
- RocketMQ安装配置过程
官网 官方网站:http://rocketmq.apache.org 下载源码包:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.8.0/r ...
- 关于djangorestframework
djangorestframework技术文档 restfrmework规范 开发模式 普通开发为前端和后端代码放在一起写 前后端分离为前后端交互统统为ajax进行交互 前后端分离 优点:分工明细,节 ...