文件上传upload-labs靶场通关指南
第一关 前端js检查——后缀检查
分析:尝试上传1.php文件,提示只允许上传png|jpg|gif文件。
尝试:上传一个1.php.jpg文件。利用burup suite抓包,并修改 为1.php,上传成功,说明只进行了前端js检查。
浏览器访问upload/1.php,显示如下,成功上传shell
第二关 MIME绕过
根据源码看,进行了MIME类型检查。
使用burp suite抓包,改包:修改content-Type: image/png,如下:
从上图可见上传成功,使用cknife连接shell.php
第三关 黑名单限制 - 文件拓展名绕过
通过以下提示(或者查看)可看出不允许上传.asp,.aspx,.php,.jsp后缀文件
可考虑使用.phtml,.php3等绕过
上传shell.phtml、shell.php3
上传成功,使用cknife连接
第四关 黑名单验证 - .htaccess文件绕过
由提示可知,几乎禁止了全部可执行文件后缀。
此时可考虑使用.htaccess文件进行黑名单绕过
1)创建.htaccess文件,并上传
<FilesMatch "shell.png">
SetHandler application/x-httpd-php
</FilesMatch>
.htaccess文件说明:通过一个.htaccess文件调用php的解析器去解析一个文件中只要包含“shell.png”这个字符串任意文件。
2)上传shell.png
<?php @phpinfo();?>
3)浏览器访问shell.png,解析成功,如下:
第五关 黑名单验证 - 文件后缀大写绕过
这一关禁止上传.htaccess文件,但是没有强制转换为小写,所以可以使用全部大写文件后缀进行绕过。
上传shell5.PHP,上传成功
使用cknife连接shell
第六关 黑名单验证 - 空格绕过
分析源码,进行了大小写转化,也无法上传.htaccess文件,但是没有过滤空格,可考虑空格绕过
尝试上传“shell.php ”文件,
上传成功
注意:只有windows会默认去除文件后缀后的空格,linux不会,所以空格绕过只适用于windows。
第七关 点绕过
分析源码发现,比上一关增加了去除空格,可以尝试利用点绕过
利用burp suite抓包并修改文件名为“phpinfo.php.”
如上图,上传成功。
注意:“.”和“ ”/空格绕过只适用于windows系统,如“phpinfo.php.”、“phpinfo.php ”,windows在解析时会默认去除最后的“.”和“ ”/空格。
第八关 ::DATA绕过
分析源码,这一关删除文件末尾的点,但是没有去除::DATA字符串,所以利用::DATA字符串绕过
利用burp suite抓包并在文件名后面加“::DATA”字符串
如上图,上传成功。
注意:::DATA绕过只适用于windows。在windows系统中文件名+::DATA,会把::DATA后面的内容当做数据流处理,且会保持之前的文件名
第九关 .空格. 绕过
分析源码,单独适用. 、空格、::DATA均不能绕过,尝试使用.和空格结合进行绕过
利用Burp suite抓包,并修改文件名为“phpinfo.php. .”
如上图,上传成功,windows系统下可成功解析。
第十关 双写绕过
分析源码,这一关对黑名单的文件后缀进行了空替换,所以可以尝试使用双写绕过
利用Burp suite抓包,修改文件名,如下:
如上图,上传成功,可成功利用。
第十一关 白名单 00截断
分析源码,只能上传png,jpg,gif文件,之后对文件名进行了拼接。可以尝试使用%00截断。
利用Burp suite抓包,改包
根据源码 $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;
修改upload/shell.php%00,%00后面的被截断。
00截断是操作系统层的漏洞,由于操作系统是C语言或者汇编语言编的,在这两种语言中\0(0x00)代表字符串的结尾。因此我们可以通过插入\0字符串的方式,达到字符串截断的目的。在url中\0de ASCII是%00。
php实现00截断的前提条件:1)php版本小于5.3.29 2)magic_quotes_gpc=Off
第十二关 00截断
与上一关类似,本关是post,如下:
若上传不成功,可检查下php版本是否为5.3以下,或者尝试对%00进行url编码。
第十三关 文件头检查
分析源码可知,这一关检查文件头
1)上传1.GIF文件,利用burp suite抓包,并修改数据包,在图片内容增加一句话木马,如下:
利用文件包含漏洞解析gif文件,如:
include()函数:包含文件,系统会自动将被包含文件中的代码嵌入到当前文件中。如果遇到PHP代码是会解析执行的。
第十四关 getimagesize绕过
本关使用getimagesize检查文件,
getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。
绕过方法
1)使用上一关的方法 :利用Bp抓包,在图片内容中插入php代码,利用文件包含漏洞执行恶意代码。
2)使用图片马(如下),利用文件包含漏洞执行恶意代码。
copy "1.GIF" /b + phpinfo.php /a webshell-2.GIF
上传webshell-2.GIF,数据包如下
上传成功,利用文件包含漏洞解析一句话木马
第十五关 exif_imagetype绕过
本关使用exif_imagetype()函数检查图片,
绕过方式同上一关
第十六关 图片二次渲染
分析源码,本关对图片进行了二次渲染
在图片末尾添加一句话木马,已行不通,在图片二次渲染时会删除该段代码。
imagecreatefrom系列函数从文件或者url中载入图像,抓取图片信息,删除木马信息。
GIF图片绕过方法:对比二次渲染前后图片变化,在相同的地方插入php代码。
第十七关
- 解法1:利用条件竞争漏洞
分析源码,本关是先上传文件,后检查是否符合要求,符合重命名,不符合删除文件。利用利用处理时间差,访问木马文件。
1)利用Burp suite抓包,然后利用Intruder模块爆破,设置如下:
2)然后在浏览器疯狂不断访问upload/phpinfo.php,或者写个脚本文件。
- 解法2:利用图片马 + 文件包含漏洞
分析源码,本关检查了文件后缀,对文件进行了重命名和上传到固定位置,尝试文件后缀绕过
上传phpinfo.png
上传成功,利用文件包含漏洞执行木马文件。
第十八关
利用图片马+文件包含漏洞即可绕过。
第十九关
解法1:利用文件后缀大写绕过 + 文件包含漏洞
解法2:move_upload_file()函数会忽略掉末尾的“/.”
利用Burp suite修改数据包,如下:
直接访问木马文件
第二十关 数组绕过
分析源代码,本关对用户传入的变量仅当做字符串处理,并未进行其他的校验。所以可以尝试传入数组,改变代码逻辑。
$is_upload = false;
$msg = null;
if(!empty($_FILES['upload_file'])){ // 非空检查//检查MIME$allow_type = array('image/jpeg','image/png','image/gif');if(!in_array($_FILES['upload_file']['type'],$allow_type)){$msg = "禁止上传该类型文件!";}else{//检查文件名$file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];if (!is_array($file)) {$file = explode('.', strtolower($file));}$ext = end($file); // 取数组最后一个元素$allow_suffix = array('jpg','png','gif');if (!in_array($ext, $allow_suffix)) { // 检查save_name字段的后缀$msg = "禁止上传该后缀文件!";}else{// reset()获取数组的第一个元素,count()返回数组中元素个数$file_name = reset($file) . '.' . $file[count($file) - 1];$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH . '/' .$file_name;if (move_uploaded_file($temp_file, $img_path)) {$msg = "文件上传成功!";$is_upload = true;} else {$msg = "文件上传失败!";}}}
}else{$msg = "请选择要上传的文件!";
}
利用Burp suite抓包,并尝试修改save_name参数为数组,传入save_name[0]:upload.php/,save_name[2]:png,save_name[1]不传递。这样,$ext=png可以绕过文件后缀检查,reset($file)=upload20.php/,$file[count($file)-1]=$file[1]=save_name[1],所以$file_name=upload20.php/.
直接访问
文件上传upload-labs靶场通关指南相关推荐
- (白帽子学习笔记)前渗透——文件上传upload labs
读者需知 1.本文仅供学习使用,由于传播和利用此文所造成的损失均由使用者本人负责,文章作者不为此承担责任 2.本文参考了一些文章,如有侵权请联系本人删除 第一关--前端验证 1.将浏览器中的JS代码禁 ...
- Egg整合antd文件上传以及防踩坑指南
Egg整合antd文件上传以及防踩坑指南 前言 一. 项目编写 二. 注意事项 2.1 清理缓存 2.2 antd的Upload组件得到的事件对象问题 2.3 关于onChange事件的注意 前言 最 ...
- [网络安全自学篇] 三十一.文件上传之Upload-labs靶场及CTF题目01-10(四)
这是作者的系列网络安全自学教程,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了编辑器漏洞和IIS高版本文件上传漏洞,包括FCKeditor.eWeb ...
- 文件上传控件SWFUpload使用指南分享
SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大.以前在项目中用过几次,但它的配置参数太多了,用过后就忘记怎么用了,到以后要用时又得到官网上看它的文档,真是太烦了.所以 ...
- Play框架文件上传Upload、FileUpload类使用详解
最近做一个前后台分离的项目,要用到前端页面传递文件对象给后端,就研究了一下框架中自带的类Upload接口.FileUpload类. 1. 后端的控制器能够接收到play.mvc.Http.Reques ...
- 复现文件上传漏洞(靶场练习)
最近越来越感觉菜了,又把各种漏洞基础原理深入理解玩了玩,巩固一下.然后找到一个不错的上传漏洞汇总的靶场,记录一下. 靶场源码地址:github.com/c0ny1/upload-labs 我这里为了方 ...
- 文件上传upload.render小记
upload.render失效 遇到的问题: 正确代码如下: 分析错误代码: 遇到的问题: 初始化时能正常打开上传,但点击查询后上传按钮失效 正确代码如下: if(paramPage>0){va ...
- 【渗透测试】文件上传漏洞:upload-labs通关简记
目录
- 东塔靶场之文件上传cms--pluck
东塔靶场之文件上传cms–pluck pluck是一个小型简单的内容管理系统,由PHP写成.即使你没有编程语言知识,也可以很容易地使用它来管理站点,功能有给页面插照片.在blog里写文章.分享照片等 ...
- java ajax多文件上传插件_jQuery Upload File 多文件批量上传插件 - 资源
jQuery File UPload 包含多个带有进度条的文件上传,能够兼容任意的服务端语言,例如 PHP.Python.Ruby on Rails.Java等,支持标准的HTML表单文件上传.jQu ...
最新文章
- [USACO19JAN]Train Tracking 2——神仙结论题+DP
- 深入浅出设计模式——组合模式(Composite Pattern)
- struts升级2.3.12到2.5.13
- 【今晚七点半】:爱奇艺DRM探索之路
- 以“基”取胜:戴尔科技云平台 释放企业新动能
- 主板有几种尺寸_工控机主板哪个牌子好?2019工控主板十大品牌排行榜
- Retrofit2设置返回类型是字符串(String)类型
- php curl获取404,php使用curl判断网页404(不存在)的方法
- IDEA快捷键大全及修改IDEA快捷键
- pandas最快入门(一)-读取与数据结构
- java 163邮箱发邮件_java用163邮箱发邮件的方式,步骤有哪些?
- postgresql-timescaldb_extention
- Licheepi zero SPI Flash 系统编译
- 计算机用户组怎么更改权限,win7系统用户组权限怎么设置
- 全球台式计算机出货量,Gartner:2020年全球PC电脑出货量达到2.75亿台 同比增长4.8%...
- Matlab/simulink、Saber及PSpice学习比较
- iPhone X携人脸识别改变行业,美图美妆用人脸识别改变女人
- 如何用Python判断某年某月有多少天
- 【Excel / WPS表格】如何按列进行合并单元格?或者说按行进行合并单元格?
- java 数据库保存 高德地图 行政区域