首先

常见黑名单绕过

$file_name = deldot($file_name);//删除文件名末尾的点
上传 shell.php.

$file_ext = strtolower($file_ext); //转换为小写上传 shell.PHP (大小写绕过)

$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
上传 shell.php::$DATA

$file_ext = trim($file_ext); //首尾去空
上传 shell.php (后跟空格)

前端验证

pass1(前端检测函数)

一般上传错误类型,若有弹窗提示那就是前端检测,没有弹窗的话就应该是后端

查看提示,在客户端进行……,说明在浏览器F12可以进行修改

直接F12定位输入框

找到敏感函数checkfile(),直接将其删除

上传木马php

上传成功,复制下面返回地址用蚁剑连接即可

连接成功

后端检测

pass2(MIME类型)

服务端进行MIME检查

需要上传图片

MIME检查是后端PHP代码只对content-type进行检查,那么就可以

使用bp抓包,修改上传的PHP的content-type为image/png

 注意有两个content-type,不要改错。

放到重发器进行重发测试

http://burp/show/1/1zeq145c9byupwa79ryqxcikb6w44x41

查看链接,上传成功

复制链接,蚁剑连接

黑名单绕过

pass3(同类型其他后缀名)

禁止上传php后缀格式的文件

禁止上传php那就试试php5

等价后缀名

上传成功

复制地址到蚁剑,能连上但是会报错

看了别人的wp了解以后才知道是数据库版本问题

这里我就贴出网址不演示操作了Upload-labs 1-21关 靶场通关攻略(全网最全最完整)_upload靶场_晚安這個未知的世界的博客-CSDN博客

修改完以后蚁剑连接正常

另外,这种攻击方式也成为黑名单绕过

pass4(.htaccess)

方法一(文件后缀绕过)

.htaccess文件

很多后缀都限制住了,这道题把我难到了,无奈看了wp,学习到了一个新知识:.htaccess文件

前提是服务器有相关的配置

在这道题我们需要利用.htaccess文件

如果在一个黑名单中添加了很多后缀名,唯独没有对htaccess过滤,可以直接上传.htaccess来设置使用php解析任意文件。

先创建一个文件,用记事本打开

里面写入内容

<filesmatch "\.jpg"="">
SetHandler application/x-httpd-php

  

然后另存为所有文件格式

然后到网站上传

上传完以后再上传一句话木马图片

用bp抓包

在重发器中找到文件上传的地址

连接到蚁剑

方法二(PHP和Windows环境叠加)

首先用bp拦截,然后观察提交的文件的后缀

利用Windows和php对文件检测的特点:构造出muma1.php:.jpg的文件格式

首先,在文件上传到服务器时,php检测到是jpg结尾的文件时可以通过

然后,window检测发现有:(Windows文件命名规则中不能出现:)就自动省略的冒号及后面的东西了,所以就剩下muma1.php,最后就绕过成功

 虽然已经上传上去了,但是木马还没有写到图片里,所以还得进行追加

需要将文件名改成muma1.<再上传

然后回到网页复制链接到蚁剑即可

pass5(加上空格和一个点)

也过滤了pass4的绕过格式

那就尝试一下常见黑名单绕过,先用bp抓包在原有基础上改变后缀(加上空格和一个点)

上传成功,在火狐中解析

复制图片链接到蚁剑,连接成功

pass6

和上面的pass5方法一样,直接简单黑名单绕过

pass7

换了一种出题风格

但是做题方式还是和上面的pass5一样,因为不涉及到后缀的问题,直接利用Windows和php语言解析的特性绕过

pass8( ::$DATA)

文件流

本以为这题将毫无新意

但是用前面的方法不管用了

这时候只能换一种方法了(查看了wp才知道)

前面几个pass源代码都会有Windows文件流过滤

但是这个没有,那我们就可以构造这个后缀  ::$DATA

继续用bp抓包修改后缀

然后上传成功,连接蚁剑

pass9(.空格.)

只允许上传图片的格式

这时候我们在客户端上传图片,但是用bp改包

改成常见黑名单绕过发现失败

这时候查看wp知道,这道题需要后缀加  .空格.

加上以后再进行测试则成功了

pass10(双写字符)

此次会从文件名中去除部分字符

采用的方法就是双写字符

成功绕过

连接蚁剑,不过最后失败了

将图片地址复制到网址栏发现后缀还是没了

反思发现双写文件后缀必须是一样的后缀,并且后缀要为小写,不然不成功

最后成功了

pass11(00截断)

题目新颖,没见过这种表达方式

查看源码

查看了wp发现这是常见的白名单绕过题目

查看了源码发现这里只允许三种文件格式通过

因此通过简单的黑名单绕过是不可行的

这时候得用bp抓包进行修改

这个时候采用一种新的知识

00截断

我们在bp中修改路径

其中上面得%00是空格的意思,因为在Windows系统中文件命名不包含空格,所以会在空格及其后面的字符都给截掉

这个时候再上传就成功了

pass12

和上一题一样的提示,但是同样的方法过不去了

继续bp抓包,不过此次地址的地方换了

而且空格不能直接%00了,要二进制的00

那就去hex那里输入然后再复制“�”

然后发送过去就行了

pass13(文件头)

检查开头的两个字节

这种情况我们直接上传一句话木马图片,然后再用00截断的方式解析图片,最后获得shell

但是这里没有文件上传到的目录,所以我们还是换一种方式

在一句话木马的php文件上加入“GIF89a”的文件头再上传即可,正常上传.php代码

改文件头

上传成功以后还要在做点手脚,因为文件在服务器中解析成了图片,所以需要在网址出进行点改正——加上“include.php?file=”执行远程包含漏洞

不过这个网站好像没有这个漏洞

查看wp才知道原来是要自己建一个php文档来生成远程包含漏洞

在这里我就没做了,感觉没什么意义,自己知道了方法就好了

pass14(getimagesize()函数)

题目要求

首先了解一下getimagesize()函数的作用

getimagesize函数会对目标的十六进制的前几个字符串进行读取。比如GIF的文件头为GIF89a,png的文件头为PNG

无所谓,直接上传一句话木马的图片

上传成功

进行文件包含执行木马

pass15(exif_imagetype()函数)

查看exif_imagetype()函数

还是采用一句话木马图片

和上一题结果一样没有新意

pass16(二次渲染)

二次渲染的题目

上传一句话木马图片,发现上传后的图片经过渲染木马被移走了

这种情况就需要找它不会渲染的文件部分了,用010的对比功能进行对比

可以发现还是挺多地方是相同的,说明并没有被渲染,所以可以在这些地方插入一句话木马

再次进行上传后得到图片,发现木马还在,上传成功

pass17(时间竞争)

全新版本

查看代码

观察源码可知,对于上传的文件处理是先保存到服务器,再对比拓展名,如果拓展名不属于白名单中的后缀,便将保存的文件删除。
这里注意到先保存再进行删除,也就是说有很短的一段时间这个文件是被保存并且可以访问的,我们利用这个先后顺序的中间差时间进行访问,访问到文件即可执行代码。
因为时间差很短,所以我们需要使用脚本进行访问。

意思是只能是下面的三种文件上传,否则其他的格式的文件一上传就会被删除

这种情况可以利用bp强行绕过

直接上传muma.php,然后用bp抓包

然后发送到测试器

进行=参数设置

直接进行操作,然后再访问网站对应的上传的目录和我们上传的木马文件

然后再用bp的测试器一直进行攻击,即两边同时进行,利用的就是网站访问muma.php文件,在bp一直上传muma.php和服务器在快速删除muma.php文件的时候,争取快速打开占用muma.php文件,占用文件,执行里面的代码,导致服务无法删除文件,从而达到目的

然后同时启动两个测试器

最后服务器会保存有文件,就成功挂马了

pass18

题目说需要代码审计,但是代码量好大,有点不想看

看了大概得介绍和上一题的防护措施类似,都是竞争绕过型

不过和17不同,这个需要上传图片类型,即一句话木马图片

当上传的速度够快时,服务器就有可能来不及重新命名

首先打开bp抓包

然后在重发器快速的进行重发,直至服务器中出现未重命名成功的文件(奈何手速不够快,我自己试了就没成功过)

道理是这么个道理,那就这样吧

pass19(/.绕过)

题目提示看不出来什么东西

代码审计一下,黑名单绕过

其中这里move_uploaded_file函数有个特点

所以我们直接修改文件后缀为muma2.php/.即可

成功连接

upload—labs的更多相关文章

  1. SUCTF 2019 Upload labs 2 踩坑记录

    SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...

  2. Upload - Labs (下)

    Pass - 11: 1.查看源代码,发现进行了一次对后缀名替换成空格,因此考虑双写绕过, 2.上传成功, 关键代码: $is_upload = false; $msg = null; if (iss ...

  3. Upload - Labs (上)

    Pass - 01: 1.尝试上传一个php文件:aaa.php,发现只允许上传某些图片类型,用bp抓包,发现http请求都没通过burp就弹出了不允许上传的提示框,这表明验证点在前端,而不在服务端 ...

  4. [web安全原理分析]-文件上传漏洞基础

    简介 前端JS过滤绕过 待更新... 文件名过滤绕过 待更新 Content-type过滤绕过 Content-Type用于定义网络文件的类型和网页编码,用来告诉文件接收方以什么形式.什么编码读取这个 ...

  5. [原题复现+审计][SUCTF 2019] WEB CheckIn(上传绕过、.user.ini)

    简介  原题复现:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn  考察知识点:上传绕过..user.ini  线上平台:h ...

  6. buu学习记录(上)

    前言:菜鸡误入buu,差点被打吐.不过学到了好多东西. 题目名称: (1)随便注 (2)高明的黑客 (3)CheckIn (4)Hack World (5)SSRF Me (6)piapiapia ( ...

  7. Upload-labs通关指南(上) 1-10

    Upload-labs 所有文章和随笔(随笔将不于csdn更新)将于我的个人博客(移动端暂未适配)第一时间更新. 一些网站存在文件上传接口,一旦存在这个接口就有可能存在漏洞. 文件上传漏洞的逻辑是将一 ...

  8. 解决ngnix服务器上的Discuz!x2.5 Upload Error:413错误

    1.修改php.ini sudo nano /etc/php5/fpm/php.ini #打开php.ini找到并修改以下的参数,目的是修改上传限制 max_execution_time = 900 ...

  9. 页面无刷新Upload File

    页面无刷新Upload File. 利用jquery.form.js的ajaxForm提交文件. 具体参考以下代码: 前台html <%@ Page Language="C#" ...

  10. 基于Picture Library创建的图片文档库中的上传多个文件功能(upload multiple files)报错怎么解决?

    复现过程 首先,我创建了一个基于Picture Library的图片文档库,名字是 Pic Lib 创建完毕后,我点击它的Upload 下拉菜单,点击Upload Picture按钮 在弹出的对话框中 ...

随机推荐

  1. Cilium系列-6-从地址伪装从IPtables切换为eBPF

    系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...

  2. 剪切图片, 原文自https://blog.csdn.net/sinat_41104353/article/details/85209456

    因为在 OpenCV2 里面,所有的东西都是 numpy array 即 np.ndarray1,所以使用 opencv 剪切图像主要原理是用 ndarray 的切片.一张图片基本上都是三维数组:行, ...

  3. 规范代码编写风格就用 eslint 和 prettier

    eslint 可以用于规范我们的编码,使得项目中的代码风格一致,更利于阅读和维护,而 prettier 可以在当我们代码不符合 eslint 规范是进行部分自动修复. eslint 通过 npm in ...

  4. [python]enumerate迭代

    Python中有个内置的函数叫做 enumerate,可以在迭代时返回元素的索引. # 示例代码01 warframe = ["saryn", "wisp", ...

  5. Cilium系列-16-CiliumNetworkPolicy 实战演练

    系列文章 Cilium 系列文章 前言 今天我们进入 Cilium 安全相关主题, 基于 Cilium 官方的<星球大战> Demo 做详细的 CiliumNetworkPolicy 实战 ...

  6. 《Pro Git》起步笔记

    @ 目录 什么是版本控制 本地版本控制系统 集中化的版本控制 分布式的版本控制系统 Git简史 Git是什么 安装Git 在Linux上安装 在Windows上安装 初次运行Git前的配置 用户信息 ...

  7. PXE操作过程 kickstart 无人值守安装

    PXE操作过程 分配给同一局域网内新加机器的地址(配置文件) dhcp 分配地址 指明tftp 服务器的地址 tftp服务端开启 udp 配置 默认关闭 安装syslinux 取得 pxelinux. ...

  8. 开源Java诊断工具Arthas:开篇之watch实战

    一.前言 还在为排查Java程序线上问题头痛吗,看我们用阿里开源的诊断神器 Arthas 来帮您 本文开篇主要介绍 阿里开源的诊断神器Arthas 3.7.0版本,watch.jad.classloa ...

  9. 带你读论文丨Fuzzing漏洞挖掘详细总结 GreyOne

    本文分享自华为云社区<[论文阅读] (03) 清华张超老师 - Fuzzing漏洞挖掘详细总结 GreyOne>,作者: eastmount. 一.传统的漏洞挖掘方法 演讲题目: 数据流敏 ...

  10. 2023-09-01:用go语言编写。给出两个长度均为n的数组, A = { a1, a2, ... ,an }, B = { b1, b2, ... ,bn }。 你需要求出其有多少个区间[L,R]

    2023-09-01:用go语言编写.给出两个长度均为n的数组, A = { a1, a2, ... ,an }, B = { b1, b2, ... ,bn }. 你需要求出其有多少个区间[L,R] ...