首先

常见黑名单绕过

$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. 阿里如何实现秒级百万TPS?搜索离线大数据平台架构解读

    ★ 淘宝搜索阶段 在2008-2012这个阶段,我们重点支持淘宝搜索的业务发展,随着淘宝商品量的不断增加,逐步引入Hadoop.Hbase等开源大数据计算和存储框架,实现了搜索离线系统的分布式化,有力 ...

  2. quarkus依赖注入之二:bean的作用域

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于bean的作用域(scope) 官方资料:http ...

  3. 学习OI两年我到底收获了什么

    做一个小小的总结 学习了两年的代码,刚刚要进入高中,留下一点文字给以前的学习做一个总结. 命中注定の邂逅-- 这两年之间,和编程产生了比学习更为低调的羁绊关系(我觉得用这个词语比较合适).编程给我带来 ...

  4. Web通用漏洞--文件包含

    Web通用漏洞--文件包含 文件包含原理 在项目开发过程中,开发人员通常会将重复使用的函数写入单个文件中,在使用该类函数时,直接调用文件即可,无需重新编写,这种调用文件的过程成为文件包含.在文件包含过 ...

  5. xshell批量新建会话

    1,xshell的会话形式就是文件夹和文件,我们只需要修改文件名称即可,但是一个个弄很麻烦,可以利用这个程序来批量新建(程序很烂,但能用) 基于python编写,文件处理 --> 文件下载 提取 ...

  6. [碎碎念]和ljf老师聊天得到的一些启发,希望大家一起来吹水

    关于写这个小文 和ljf老师聊天得到的一些启发,希望能够总结出来方便回顾,并且我觉得这些想法有一定的普适性,可以供大家参考. 疑问 我的疑问是,我现在主要在做fuzz+pwn,能够进行漏洞挖掘,以及w ...

  7. docker 搭建php环境(踩坑经验!!)

    本次安装的推荐配置: nginx 1.24.0 mysql 5.7.43 php 7.4.3-fpm redis 7.2.0   一.安装虚拟机 vm虚拟机需要4g内存,网络使用nat模式设置静态ip ...

  8. Netty源码学习3——Channel ,ChannelHandler,ChannelPipeline

    系列文章目录和关于我 零丶引入 在Netty源码学习2--NioEventLoop的执行中,我们学习了NioEventLoop是如何进行事件循环以及如何修复NIO 空轮询的bug的,但是没有深入了解I ...

  9. H.265+SRS6.0服务器部署

    H.265+SRS6.0服务器部署 SRS从6.0开始,全面支持H.265,包括RTMP.FLV.HLS.GB28181.WebRTC等等.具体的服务器部署及H.265推流步骤如下. 1. SRS 要 ...

  10. Storm整合Kafka Java API源码

    1.Maven项目的pom.xml源码如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu ...