upload-labs靶场通关

pass-01

function checkFile() {
    var file = document.getElementsByName('upload_file')[0].value;
    if (file == null || file == "") {
        alert("请选择要上传的文件!");
        return false;
    }
    //定义允许上传的文件类型
    var allow_ext = ".jpg|.png|.gif";
    //提取上传文件的类型
    var ext_name = file.substring(file.lastIndexOf("."));
    //判断上传文件类型是否允许上传
    if (allow_ext.indexOf(ext_name + "|") == -1) {
        var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
        alert(errMsg);
        return false;
    }
}

代码理解

1、函数checkFile验证用户选择的文件是否符合要求

function checkFile() {
    var file = document.getElementsByName('upload_file')[0].value;

获取文件名:这行代码获取页面上名为 upload_file 的文件输入框的值,即用户选择的文件的路径。

2、检查是否选择了文件

    if (file == null || file == "") {
        alert("请选择要上传的文件!");
        return false;
    }

如果用户没有选择文件(即 filenull 或空字符串),则弹出提示框,要求用户选择一个文件,并返回false,停止执行后续代码。

3、定义允许的文件类型

var allow_ext = ".jpg|.png|.gif";

这里定义了一个字符串,列出了允许上传的文件扩展名(.jpg, .png, .gif),用竖线 | 分隔。

4、提取文件扩展名

var ext_name = file.substring(file.lastIndexOf("."));

这行代码通过 lastIndexOf 方法找到最后一个 . 的位置,从而提取文件的扩展名。

5、检查文件扩展名是否允许

    if (allow_ext.indexOf(ext_name + "|") == -1) {
        var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
        alert(errMsg);
        return false;
    }

这部分代码检查提取的扩展名是否在允许的扩展名列表中。如果不在,则弹出一个错误消息,告知用户当前文件类型不被允许,并要求上传合适类型的文件。

步骤:

禁用JavaScript

上传

访问地址

pass-02

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '文件类型不正确,请重新上传!';
        }
    } else {
        $msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
    }
}

代码理解

$_FILS

• 超全局变量$_FILES是一个二维数组,用来保存客户端上传到服务器的文件信息。二维数组的行是文件域的名称,列有5个。

1)、$FILES[]['name'] #上传的文件名

2)、$FILES[]['type'] #上传的文件类型,这个类型是MIME类型(image/jpeg image/gif image/png)

3)、$FILES[]['size'] #文件的大小,以字节为单位

4)、$FILES[]['tmp_name'] #文件上传时候的临时文件

5)、$_FILES[]['error'] #错误编码(值有0、1、2、3、4、6、7)0表示正确1

1. 变量初始化

$is_upload = false;
$msg = null;
  • $is_upload 是一个布尔值,默认值为 false,用来表示文件是否成功上传。

  • $msg 用于存储上传过程中出现的错误信息,初始化为 null

2. 检查表单提交

if (isset($_POST['submit']))
  • 这段代码检查是否通过 POST 请求提交了表单。如果表单被提交,$_POST['submit'] 会被设置,因此代码进入判断块。

3. 检查上传目录是否存在

if (file_exists(UPLOAD_PATH))
  • UPLOAD_PATH 是上传文件存储目录的路径。这里检查该目录是否存在。如果目录存在,则继续处理文件上传。如果目录不存在,后续的上传操作将会失败,错误信息会被设置为 "文件夹不存在,请手工创建!"

4. 验证文件类型

if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif'))
  • 这段代码验证上传的文件类型是否为 jpegpnggif$_FILES['upload_file']['type'] 包含了上传文件的 MIME 类型。如果文件类型符合要求,代码将继续处理上传。

  • 如果文件类型不符合要求,错误信息会被设置为 "文件类型不正确,请重新上传!"

5. 获取临时文件路径和目标路径

$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name'];
  • $temp_file 存储了上传文件的临时路径,这个路径是服务器保存上传文件的临时位置。

  • $img_path 是上传文件的目标路径,将文件保存到 UPLOAD_PATH 指定的目录下,文件名与用户上传时的文件名相同。

6. 移动文件

if (move_uploaded_file($temp_file, $img_path)) {
    $is_upload = true;
} else {
    $msg = '上传出错!';
}
  • move_uploaded_file() 函数将临时文件移动到目标目录。如果文件成功移动,$is_upload 被设置为 true,表示文件上传成功。

  • 如果文件移动失败,错误信息 $msg 被设置为 "上传出错!"

7. 上传目录不存在的错误处理

} else {
    $msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
}
  • 如果检查到 UPLOAD_PATH 目录不存在,错误信息会被设置为 "UPLOAD_PATH 文件夹不存在, 请手工创建!",提醒用户手动创建该目录。

步骤:

抓包

修改为image/jpeg

上传

pass-03

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array('.asp','.aspx','.php','.jsp');
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($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.'/'.date("YmdHis").rand(1000,9999).$file_ext;            
            if (move_uploaded_file($temp_file,$img_path)) {
                 $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

代码理解:

1. 初始化变量

$is_upload = false;
$msg = null;
  • $is_upload 是一个布尔变量,表示文件是否成功上传。初始值为 false

  • $msg 用于存储上传过程中的错误消息,初始值为 null

2. 检查表单提交

if (isset($_POST['submit'])) {
  • 这段代码检查是否通过 POST 请求提交了一个表单。如果表单被提交,$_POST['submit'] 将被设置,因此会进入这个判断块。

3. 检查上传目录是否存在

if (file_exists(UPLOAD_PATH)) {
  • UPLOAD_PATH 是用于保存上传文件的目录路径。file_exists() 检查该路径的文件夹是否存在。如果目录存在,代码继续执行。如果目录不存在,则返回错误信息,要求用户手动创建该目录。

4. 定义不允许上传的文件扩展名

$deny_ext = array('.asp','.aspx','.php','.jsp');
  • $deny_ext 是一个包含不允许上传的文件扩展名的数组。这里列出了 .asp.aspx.php.jsp 等扩展名,这些文件类型通常可能被用于执行服务器端脚本,因此不允许上传。

  • 在某些特定环境中某些特殊后缀仍会被当作php文件解析 php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml。

5. 获取上传文件的扩展名并进行处理

$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($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); // 收尾去空
  • $_FILES['upload_file']['name'] 获取用户上传的文件名。

  • trim() 去除文件名两端的空白字符。

  • deldot($file_name) 可能是一个自定义的函数,用于删除文件名末尾的点(例如,如果文件名是 image.,则会去掉末尾的点)。注意这个函数并不是 PHP 的内置函数,你需要查看它的定义才能确认它的具体作用。

  • strrchr($file_name, '.') 用于获取文件名中最后一个点(.)之后的部分,即文件的扩展名。

  • strtolower($file_ext) 将扩展名转换为小写,确保文件类型验证时不受大小写影响。

  • str_ireplace('::$DATA', '', $file_ext) 这个步骤用于去除上传文件名中可能存在的恶意字符串 ::$DATA。这是某些操作系统(如 Windows)中可能存在的文件特性,攻击者可能利用这一点上传恶意文件,因此需要去除。

  • trim($file_ext) 去除扩展名两边的空白字符。

6. 检查文件扩展名是否允许上传

if (!in_array($file_ext, $deny_ext)) {
  • in_array() 检查上传的文件扩展名是否在 $deny_ext 数组中。如果扩展名在数组中,表示该文件类型不允许上传,后续上传操作将被阻止。

7. 处理文件上传

$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH . '/' . date("YmdHis") . rand(1000, 9999) . $file_ext;
  • $_FILES['upload_file']['tmp_name'] 获取文件在服务器上的临时文件路径。

  • $img_path

    构建文件保存的目标路径:

    • 使用 date("YmdHis") 获取当前时间(年-月-日 时-分-秒)作为文件名的前缀,确保文件名唯一。

    • rand(1000, 9999) 生成一个 1000 到 9999 之间的随机数,进一步保证文件名的唯一性。

    • 使用上传文件的扩展名 $file_ext 作为文件的后缀名,确保文件保存时使用正确的扩展名。

8. 移动文件到目标目录

if (move_uploaded_file($temp_file, $img_path)) {
    $is_upload = true;
} else {
    $msg = '上传出错!';
}
  • move_uploaded_file() 将上传的临时文件从临时目录移动到目标目录 $img_path

  • 如果文件成功移动,设置 $is_upload = true,表示上传成功。

  • 如果移动失败,设置错误消息 $msg'上传出错!'

9. 错误处理

} else {
    $msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
}
  • 如果文件的扩展名在禁止上传的类型列表中,设置错误消息为 '不允许上传.asp,.aspx,.php,.jsp后缀文件!'

10. 上传目录不存在时的错误处理

} else {
    $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
}
  • 如果 UPLOAD_PATH 目录不存在,设置错误消息为 '文件夹不存在,请手工创建!'

步骤:

抓包,改成.php5

上传

pass-04

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".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",".ini");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($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 . '文件夹不存在,请手工创建!';
    }
}

•代码理解(与pass-03类似):

$deny_ext:定义一个数组,其中列出了所有禁止上传的文件扩展名(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".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",".ini"

•步骤:

上传.png文件

上传.htaccess文件(将.png格式的文件以解析php文件的方式来解析)

pass-05

$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_name = deldot($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 . '文件夹不存在,请手工创建!';
    }
}

•代码理解:

$deny_ext:定义一个数组,其中列出了所有禁止上传的文件扩展名

".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 = deldot($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); //首尾去空

•步骤:

上传、抓包php文件

修改为php. .

删除末尾的点,转换为小写,去除字符,去除空格之后为php.文件,可进行绕过。

pass-06

$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",".ini");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $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.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

没有转换大小写

•步骤:

上传.php文件抓包,改为大写

pass-07

$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",".ini");
        $file_name = $_FILES['upload_file']['name'];
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file,$img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件不允许上传';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

没有删空格

•步骤:

上传.php文件抓包,加空格。

pass-08

$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",".ini");
        $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文件抓包,在php末尾加.

pass-09

$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",".ini");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = trim($file_ext); //首尾去空
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

没有过滤“::$DATA”

•步骤:

上传.php文件抓包,加上::$DATA

pass-10

$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",".ini");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($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文件抓包,加php

将一个php去掉后,然后拼接了一个新的php

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值