UPLOAD labs 第三关

2023-11-07

看源码

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

 源码从上往下大概意思是,第一个变量为错误,第二个为空,然后isset检测submit是否设置且非空。假如能找到文件路径,定义变量$deny_ext=.asp,.aspx,.php,.jsp等四个后缀为一个数组,然后trim()移除字符串的两侧字符,一路变化下来,取$deny_ext的反,也就是抓包后将jpg改为php也无法绕过。

本关考点是黑名单绕过,只要我们的后缀修改后不在黑名单里,但是可以执行不就可以了吗。

也不需要验证jpg,所以将后缀改为php5,然后打开phpstudy的配置文件

 在phtml后加个php5,注意是空格 点 php5,改完重启phpstudy,然后上传后缀为php5的一句话木马

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UPLOAD labs 第三关 的相关文章

  • Could not load library cudnn_cnn_infer64_8.dll. Error code 193

    是 cudnn 版本问题 原来安装了 8 4 0 27 版本太高了 下载了 cudnn 11 4 windows x64 v8 2 4 15 zip 解压到 cuda 对应的文件夹 运行成功 下载地址 https developer nvi
  • centos7服务器环境搭建记录

    这个月换了工作 公司配的电脑没有到货 让玩服务器 新工作的第一份任务就是的搭建开发环境配置服务器 作为一个资深高级java开发 自然不会被这个难倒 很早以前就玩过服务器 早几天面试之前还在虚拟机上搭建了redis kafka集群 况且还有万
  • 【QT 基础教程 十】QMap类详解

    概要 本期主要讲解Qt中QMap类的常用接口 一 简介 1 头文件 include
  • MySQL 加锁处理分析

    背景 MySQL InnoDB的加锁分析 一直是一个比较困难的话题 我在工作过程中 经常会有同事咨询这方面的问题 同时 微博上也经常会收到MySQL锁相关的私信 让我帮助解决一些死锁的问题 本文 准备就MySQL InnoDB的加锁问题 展
  • 2021-03-07

    关于射线批处理 RayCastCommand 使用 前言 API 用于实际解决问题中 批处理射线较为实用 数量大间隔大的使用较为轻松对于性能提升有较高的帮助 相对于射击功能 指定抓点功能等需要减少计算 对于性能消耗对比可见效果比较大 pri

随机推荐

  • 使用线程锁(Lock)实现线程同步

    任务描述 本关任务 使用Lock 实现对于某一块代码的互斥访问 相关知识 上一关我们谈到了synchronized关键字 synchronized关键字主要用来同步代码 实现同步互斥访问 也就是在同一时刻只能有一个线程访问临界资源 从而解决
  • cocos creator action之jumpTo、jumpBy

    cocos creator中 jumpTo jumpBy的使用方法例子 cc Class extends cc Component properties move cc Node start this moveT moveT this mo
  • 使用faceswap进行视频换脸操作

    一 下载源码安装环境 开源csdn代码下载地址 https codechina csdn net mirrors deepfakes faceswap Github下载地址 https github com deepfakes facesw
  • 解决OCFS2的o2net_connect_expired问题

    接上次的文章 在修改 etc sysconfig o2cb的配置后 发现两机器只有一台可以自动挂载ocfs2分区 而另外一台不能自动挂载 但启动完毕后 手动挂载正常 一 详细情况两机器分别是dbsrv 1和dbsrv 2 使用交叉线做网络心
  • 一文1800字从0到1使用Python Flask实战构建Web应用

    Python Flask是一个轻量级的Web框架 它简单易用 灵活性高 适用于构建各种规模的Web应用 本文将介绍如何使用Python Flask框架来实战构建一个简单的Web应用 并展示其基本功能和特性 第一部分 搭建开发环境 在开始之前
  • 如何在DOS下以管理员身份执行命令?

    原创 普通User的DOS窗口 以管理员身份运行的DOS窗口 转换 Windows10系统下 13 11 55 2018 10 18 转载于 https www cnblogs com chiweiming p 9809904 html
  • TP5 查询一个字段不等于多个值where的用法

    组装where条件 wheres 后台人员类型 people input people switch people case 业务员 wheres order type neq 等待老大审核 break case 经历 wheres ord
  • 【elasticSearch系】3.完整搭建详尽版elk

    话不多说 我们先看下经典的elk 是由哪些组件搭建组合起来的 elasticSearch和kibana搭建 可以查看之前我搭建elasticsearch和kibana 的这篇文章 logstash搭建 为了和之前我搭建elasticsear
  • 基于SSM+SpringBoot+Thymeleaf+LayUI的高校大学生成绩分析管理系统(附论文)

    项目运行截图 基于 B S 架构的高校成绩分析与管理系统的设计与实现 第一章 绪论 学生的不断增多 学生的考试管理也增大了教师的负担 现社会尚存的系统功能简单 且缺少分析功能导致学生不能及时了解学生成绩趋势 针对相同课程不同专业成绩情况 系
  • oracle 释放过度使用的Undo表空间

    故障现象 UNDO表空间越来越大 长此下去最终数据因为磁盘空间不足而崩溃 问题分析 产生问题的原因主要以下两点 1 有较大的事务量让Oracle Undo自动扩展 产生过度占用磁盘空间的情况 2 有较大事务没有收缩或者没有提交所导制 说 明
  • linux运行directory,我在linux里用命令出来is a directory是怎么回事

    使用的命令应该是针对文件的命令 在使用过程命令中把参数指定成了目录 所以linux报错说 这是一个目录 可以理解为linux在提醒 这是一个目录不是文件 这个命令应该是针对文件的 扩展资料 参数 c 建立一个压缩文件的参数指令 create
  • 【程序设计训练】4-12 疫情期间

    问题描述 正值新冠疫情期间 阿迪没法返回学校学习 他希望通过参加一些比赛来提高一下编程技能 同时做做运动 他收集了接下来的 n 天里每一天的信息 包括健身房是否开放 或者互联网上是否有程序设计竞赛 第 i 天可以有以下四种情况之一 该天健身
  • MySQL最全整理!java与或非逻辑符号

    内存模型 内存模型定义为什么要有内存模型为什么要重排序 重排序在什么时候排如何约束重排序规则happens before 什么是顺序一致性 CAS 实现的原理 是阻塞还是非阻塞方式 什么时候用 使用时需要考虑的问题 处理器和 Java 分别
  • jmeter与jenkins集成

    需求 通过jenkins来运行jmeter接口测试用例文件 平台 win10 原理 任何可以通过命令行执行的 都可以集成至jenkins 在jenkins构建中 执行winodws命令 调用jmeter 并执行jmx文件 最后生成测试报告
  • 可控硅

    可控硅在控制极加上合适的触发电流 可控硅就能够从断开状态变成为导通状态 这时 我们取消控制极的触发电流 但可控硅仍然能维持导通状态 如果流过可控硅的电流开始变小 当小于维持导通的能力时 可控硅才关断 直到下次触发时才会导通
  • 人工智能 Linux(三)

    人工智能 Linux 三 一 指令 1 df指令 作用 查看磁盘空间 语法 df h h 以可读性较高的形式展示大小 2 free指令 作用 查看内存使用情况 语法 free m m 表示以mb为单位查看 3 head指令 作用 查看一个文
  • SpringBoot启动时打印的时间是如何计算的?

    一 现象 我们都知道SpringBoot启动时会打印时间 那么内部是如何计算的呢 二 本质 获取时间间隔 计算秒数 Started springBoot in 20 763 seconds 记录开始的毫秒数 计算毫秒数 Root WebAp
  • 【模板】重载运算符

    重载string 以日期类CDate为例 class CDate public int y m d CDate int y int m int d y y m m d d operator string string s stringstr
  • CCAnimation类 参考

    http www cocos2dchina com documentation interface c c animation html
  • UPLOAD labs 第三关

    看源码 is upload false msg null if isset POST submit if file exists UPLOAD PATH deny ext array asp aspx php jsp file name t