Pumpkin-Man

活到老_学到老!

0%

PHP-文件包含

一、使用 php://filter 等伪协议的作用与利用姿势。要求:提交文档的同时,提交测试代码

  • http://127.0.0.1/dvwa/vulnerabilities/fi/?page=php://filter/convert.base64-encode/resource=./cmd.php

    • 使用伪协议将 cmd.php 源码编码成 base64 格式输出到网页中

      BkH0Qe.png

    • 将base64解密:

      BkbiY6.png

二、使用表单加 ajax 处理上传文件。要求:1. 判断文件类型;2. 判断文件格式;3. 文件重命名;4、文件大小限制

index.html
<?php
header("Content-Type:text/html;charset=utf-8");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$file_size = $_FILES["file"]["size"];
echo "文件后缀:".$extension."<br>";
echo "文件大小:".($_FILES["file"]["size"] / 1024)."KB";
if ($_FILES["file"]["error"] > 0 && ($file_size < 204800)||($extension=="jpg")||($extension=="gif")||($extension=="jpeg")||($extension=="png"))
{
    echo "错误:: " . $_FILES["file"]["error"] . "<br>";
}
else
{
    // echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
    // echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
    // echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    // echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";

        // 判断当前目录下的 upload 目录是否存在该文件
        // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
    if (file_exists("upload/" . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " 文件已经存在。 ";
        }
    else
        {
            // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
            move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
            //echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
        }
  }
?>



upload_file.php

<?php
header("Content-Type:text/html;charset=utf-8");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$file_size = $_FILES["file"]["size"];
echo "文件后缀:".$extension."<br>";
echo "文件大小:".($_FILES["file"]["size"] / 1024)."KB";
if ($_FILES["file"]["error"] > 0 && ($file_size < 204800))
{
    echo "错误:: " . $_FILES["file"]["error"] . "<br>";
}
else
{

        // 判断当前目录下的 upload 目录是否存在该文件
        // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
    if (file_exists("upload/" . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " 文件已经存在。 ";
        }
    else
        {
            // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
            move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
            //echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
        }
  }

?>

BkvMkj.png