当前位置: 首页 > article >正文

68,[8] BUUCTF WEB [RoarCTF 2019]Simple Upload(未写完)

<?php
// 声明命名空间,遵循 PSR-4 自动加载规范,命名空间为 Home\Controller
namespace Home\Controller;

// 导入 Think\Controller 类,以便扩展该类
use Think\Controller;

// 定义 IndexController 类,继承自 Think\Controller 类
class IndexController extends Controller
{
    // index 方法,可能是默认页面的控制器方法
    public function index()
    {
        // 显示当前文件的源代码,通常用于调试或展示代码
        show_source(__FILE__);
    }

    // upload 方法,用于处理文件上传功能
    public function upload()
    {
        // 获取上传的文件信息,存储在 $uploadFile 变量中
        $uploadFile = $_FILES['file'];

        // 检查上传文件的名称,如果包含.php 后缀(不区分大小写),则返回 false
        if (strstr(strtolower($uploadFile['name']), ".php")) {
            return false;
        }

        // 实例化 ThinkPHP 的 Upload 类,用于文件上传操作
        $upload = new \Think\Upload();
        // 设置允许上传的最大文件大小为 4096 字节
        $upload->maxSize = 4096;
        // 设置允许上传的文件扩展名,仅允许 jpg, gif, png, jpeg 类型的文件
        $upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');
        // 设置文件上传的根目录为./Public/Uploads/
        $upload->rootPath = './Public/Uploads/';
        // 设置文件上传的子目录,这里为空
        $upload->savePath = '';
        // 调用 upload 方法进行文件上传,并将结果存储在 $info 变量中
        $info = $upload->upload();
        // 如果上传失败,调用 error 方法显示错误信息并返回
        if (!$info) {
            $this->error($upload->getError());
            return;
        } else {
            // 上传成功时,获取上传文件的存储路径和名称,并组合成完整的 URL
            $url = __ROOT__.substr($upload->rootPath, 1).$info['file']['savepath'].$info['file']['savename'];
            // 将上传成功的信息和文件 URL 以 JSON 格式输出
            echo json_encode(array("url" => $url, "success" => 1));
        }
    }
}

未完待续

 

 


http://www.kler.cn/a/516723.html

相关文章:

  • 用Python绘制一只懒羊羊
  • 在 Windows 11 中为 SMB 3.x 文件共享协议提供 RDMA 支持
  • CNN-GRU卷积门控循环单元时间序列预测(Matlab完整源码和数据)
  • WIN11 UEFI漏洞被发现, 可以绕过安全启动机制
  • mysql 学习2 MYSQL数据模型,mysql内部可以创建多个数据库,一个数据库中有多个表;表是真正放数据的地方,关系型数据库 。
  • uniapp+Vue3(<script setup lang=“ts“>)模拟12306城市左右切换动画效果
  • JAVASE入门八脚-Spring ,时间Data,Dateformat,parse,Math,容器
  • Linux网络 | 网络计算器客户端实现与Json的安装以及使用
  • 深度剖析 PyTorch框架:从基础概念到高级应用的深度学习之旅!
  • OpenCV: 深入理解OpenCV中CV_WRAP_AS宏及其作用
  • 城市生命线安全保障:技术应用与策略创新
  • 使用 ECS服务器 和 vsCode 搭建远程开发站
  • Windows电脑不小心点击了关机,关机过程中如何阻止
  • 20250121面试鸭特训营第29天
  • Python的进程和线程
  • stm32f103 单片机(一)第一个工程
  • 2025.1.21——六、BUU XSS COURSE 1 XSS漏洞|XSS平台搭建
  • react引入DingTalk-JinBuTi字体
  • 考研机试题:打印数字菱形
  • 宝塔Linux面板教程
  • 【数据结构】深入解析:构建父子节点树形数据结构并返回前端
  • TCP 详解
  • 【uniapp】获取上传视频的md5,适用于APP和H5
  • linux实时流量监控工具iftop详解
  • 【优选算法】8----四数之和
  • 网络安全 | 0day漏洞介绍