PHP代码审计 14 文件上传漏洞

本文记录 PHP 代码审计的学习过程,教程为暗月 2015 版的 PHP 代码审计课程

PHP 代码审计博客目录

1. 简介

  1. 审计函数

    move_uploaded_file()

    定义和用法:

    move_uploaded_file() 函数将上传的文件移动到新位置。
    若成功,则返回 true,否则返回 false。

    语法:
    move_uploaded_file(file,newloc)

    move_uploaded_file() 官方文档链接

  2. 超全局变量 $_FILES

    1. 后缀名是图片格式
    2. 前缀名不能是外部提交的
    3. 上传的目录不可以是获取外部提交的路径
  3. 防御

    1. 使用白名单方式检测文件后缀
    2. 上传之后按时间能算法生成文件名称
    3. 上传目录脚本文件不可执行
    4. 注意 %00 截断
    5. Content-Type 验证
  4. DVWA 中的源代码

       
    

    DVWA 中防御方式是使用白名单机制

  5. move_uploaded_file() 函数示例:

    move_uploaded_file() 对安全模式和 open_basedir 都是敏感的。不过,限制只针对 destination 路径,因为允许移动上传的文件名 filename 可能会与这些限制产生冲突。move_uploaded_file() 仅作用于通过 PHP 上传的文件以确保这个操作的安全性。

     
     
         
         
    0){ //判断文件大小 move_uploaded_file($fileinfo['tmp_name'],$fileinfo['name']); //上传文件 echo "上传成功"; }else{ echo '文件太大或未知'; } } ?>

    结果为

    PHP代码审计 14 文件上传漏洞_第1张图片

    使用 move_uploaded_file()函数上传文件,在创建 form表单时,必须设置 form 表单的 enctype="multipart/form-data“。

你可能感兴趣的:(代码审计)