upload-labs-master文件上传靶场第七关详解
一.前言
upload-labs-master是文件上传靶场,里面目前总共有19关,github地址https://github.com/c0ny1/upload-labs,今天要说的是这个靶场的第七关的解法
二.正文
先看下第七关长什么样
和其他几关一样,咱们先直接看下源码吧
$is_upload = false; $msg = null; if (isset($_POST['submit'])) {if (file_exists(UPLOAD_PATH)) {$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");$file_name = trim($_FILES['upload_file']['name']);$file_ext = strrchr($file_name, '.');$file_ext = strtolower($file_ext); //转换为小写$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext = trim($file_ext); //首尾去空if (!in_array($file_ext, $deny_ext)) {$temp_file = $_FILES['upload_file']['tmp_name'];$img_path = UPLOAD_PATH.'/'.$file_name;if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;} else {$msg = '上传出错!';}} else {$msg = '此文件类型不允许上传!';}} else {$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';} }
说一下上面的代码,虽然php不怎么会但是作者已经把改写的注释已经写上了,所以我就照着作者的注释说一下
$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");#上面这个就是传说中的黑名单了,只要上传的文件的后缀名在这个里边,都会上传不成功,当然绕过方法也是有的
$file_ext = strrchr($file_name, '.'); #这个需要解释下了,strrchr的作用先说下,strrchr() 函数查找字符在指定字符串中从后面开始的第一次出现的位置,如果成功,则返回从该位置到字符串结尾的所有字符,如果失败,则返回 false。与之相对应的是strstr()函数,它查找字符串中首次出现指定字符的位置举个栗子: <?phpecho strrchr( '123456789.xls' , '.' ); //程序从后面开始查找 '.' 的位置,并返回从 '.' 开始到字符串结尾的所有字符
看看上面的代码都限制了多少吧,大小写,加空格,加字符串,黑名单,好多限制。。。。。
这个时候可以采用一种方法来绕过,因为靶场是搭建在windows上的,所以windows有一个特性,windows系统自动去掉不符合规则符号后面的内容,什么意思呢?举个栗子
比如你新建了一个1.txt文件,然后你将名称改为1.txt.试试,虽然会有下面的警告,但是windows还是会默认去掉后面的.,名字还是变成了1.txt
这个时候我们就可以利用.来绕过限制了,因为strrchr函数会将上传的文件名后缀处理为.php.,当上传到win机器上时又会将后面的.去掉,然后后缀就又会被还原成.php,这样就可以执行了,下面演示一下
首先上传1.php文件并抓包,在burp修改文件后缀名为.php.
拿c刀连接下试试
连接成功,我们上传的webshell已经成功连接上了
转载于:https://www.cnblogs.com/Id3al/p/9838584.html
upload-labs-master文件上传靶场第七关详解相关推荐
- 网络安全与渗透:文件上传漏洞,一文详解(十)此生无悔入华夏,男儿何不带吴钩
中华人民共和国网络安全法 阅读本文前,请熟读并遵守中华人民共和国网络安全法: http://gkhy.jiujiang.gov.cn/zwgk_228/jc/zcwj/202006/P02020061 ...
- java上传下载_Java文件上传与文件下载实现方法详解
本文实例讲述了Java文件上传与文件下载实现方法.分享给大家供大家参考,具体如下: Java文件上传 数据上传是客户端向服务器端上传数据,客户端向服务器发送的所有请求都属于数据上传.文件上传是数据上传 ...
- 文件上传漏洞——upload-labs 1-19 (详解)
upload-labs-1 删除 js 进行绕过 上传图片,发现上传成功 上传 shell 发现: 发现是白名单,所以由前面我们知道,极有可能在前端存在过滤,我们检查一下: 发现 checkFile( ...
- 「造轮子」一个文件上传靶场知识总结记录
https://www.sqlsec.com/2020/10/upload.html#toc-heading-1 或者 https://xz.aliyun.com/t/8435 直接使用别人的靶场总感 ...
- python代码图片头像_Flask 上传自定义头像的实例详解
Flask Web 开发这本书基本上做完了,后面还需要温习,但是自己做的博客总觉得简陋了点,所以,在动脑子开发新功能 今天想到最基本的功能,自定义头像 那这样的功能,设计到2大基本功能块 1:如何进行 ...
- linux上连接ftp服务器,linux下lftp连接ftp服务器进行上传与下载的方法详解
摘要 腾兴网为您分享:linux下lftp连接ftp服务器进行上传与下载的方法详解,中英翻译,中建在线,掌上看家,银行帮等软件知识,以及微信一键转发工具,小学英语冀教版,正是在下表情包,易问电信,万能 ...
- layui如何集成文件服务器,layui使用upload组件实现文件上传功能
layui使用upload组件实现文件上传功能 发布时间:2020-05-22 17:25:25 来源:亿速云 阅读:309 作者:鸽子 背景:页面上一个按钮,点击弹出上传框,从按钮的方法代码开始写: ...
- vue+Element ui中使用 upload实现Excel文件上传
文章目录 业务需求: 实现方式: 具体步骤: 1.引入组件: 2.data中定义: 3.methods中方法: 业务需求: 批量导入Excel文件 实现方式: 使用组件upload 具体步骤: 1.引 ...
- Linux 中 3 个文件打包上传和下载相关命令详解
tar 命令 通过 SSH 访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar 命令就是必不可少的一个功能强大的工具.Linux 中最流行的tar是麻雀虽小,五脏俱全,功能强大. 使用t ...
最新文章
- 个人博客三|首页后台开发
- filazilla搭建ftp_Windows7下利用FileZilla Server搭建ftp
- 成功解决ValueError: Data is not binary and pos_label is not specified
- defender 删除_Java 8中的默认方法(Defender方法)简介
- 【转】c# 操作webservice(经典入门教程+MSDN必胜)(有自己修改的部分)
- linux查看tomcat启动内存溢出,Linux下 Tomcat内存溢出
- electron forge 好用吗_在优麒麟上使用 Electron 开发桌面应用
- 打开新经济大门 淘宝直播如何打造最有价值的直播平台?
- VGG16和VGG19的理解
- 带注释的c51汇编语言,51单片机矩阵键盘控制程序 汇编语言 带详细注释
- html css的参考文献,网页制作论文参考文献大全 网页制作参考文献有哪些
- Matlab 两条曲线间填充颜色,改变透明度
- ubuntu16.04,zed7020,sdsoc,xfOpenCV,arm-linux,OpenCV3.4.1
- 使用js脚本实现微信定时发送信息
- 米哈游服务器一个月维护消费多少,崩坏3:为什么现在还有这么多米卫兵一直维护米哈游?这个理由说到心里去了...
- 云计算机到底是啥来的,啥叫云计算(云计算究竟是什么)
- Please contact your system administrator. Add correct host key in /Users/***/.ssh/known_hosts
- java计算机毕业设计教师教学质量评估系统MyBatis+系统+LW文档+源码+调试部署
- 罗克韦尔自动化牵手FBS2017 推动中国食品饮料行业“智”变
- 一句话理解:谐振腔工作原理
热门文章
- jms中activemq事务探讨
- 实现一个多线程循环的类
- Mac OS X 中的脚本语言应用
- SQL 进阶技巧(下)
- JavaScript会是Web开发的未来吗?
- 史上最坑爹的代码!个个让人崩溃!
- PaaS平台应用的12要素原则
- 3.JAVA中的多态
- WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner] - com.mchange.v2.as
- java包装器类_Java中的基本类型和包装类