发布时间:2022-08-19 14:27
upload-labs靶场 是PHP环境运行的,所以我准备了一个PHP脚本和一张图片
图片好准备,PHP脚本如果不想写的话可以用我的这个获取当前时间的PHP脚本
header("content-type:text/html;charset=utf-8");
date_default_timezone_set("PRC");//设置时区
echo "当前时间为:";
$today = date("Y-m-d D h:i:s A ");
echo $today;
?>
图片默认不清楚放大看!!!
$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","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");
$file_name = trim($_FILES['upload_file']['name']);
$file_name = str_ireplace($deny_ext,"", $file_name);
$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 = UPLOAD_PATH . '文件夹不存在,请手工创建!';
}
}
这关你可以试试上一关的通关方法,如果通关了也要知道下面这个方法
看代码可以看出来它是将上传文件扩展名包含 $deny_ext中的话变成空
扩展名也就是没有扩展名,什么意思那看下面的图片展示
可以看到上传成功了但是,没有扩展名
的,没有扩展名是不算成功
的,没有扩展名系统是不知道它是什么文件,可能会当成文本文件,不会当做执行文件的,也就是我的脚本是不会执行成功的
这关看代码它还是代码问题,它使用了str_ireplace()函数,这个函数它是不区分大小写的替换函数,举例:测试.phtmhp
或测试.pphphp
执行函数后是 测试.php
因为里面有htm
和php
有就替换为空,这是在$deny_ext
变量中定义好的
通关完成!