upload-labs关卡记录8

devtools/2025/1/8 8:18:55/

黑名单过滤,同时不能进行双写,大小写,特殊可解析后缀,.htaccess,都不能。点击提示发现:

禁止上传所有可解析后缀,抓包试试:

抓包加空格发现也不能绕过,看源码分析吧:

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

 可以看到,相比前一关,这里多了一个前后空格的去除,因此这里用加点绕过:

  1. $file_ext = strrchr($file_name, '.'); 这行代码使用strrchr函数获取文件名中的最后一个点(.)之后的部分,即文件扩展名。而不会去除我们加的.。但是在Windows下,这个点和空格一样,都会被忽略。

上传成功,试试:


http://www.ppmy.cn/devtools/146614.html

相关文章

配置搜索无人机

升级ubuntu内核 https://www.bilibili.com/video/BV11X4y1h7qN/?spm_id_from333.337.search-card.all.click 进入四个内核文件并安装 sudo dpkg -i *.deb安装ROS,PX4,XTDrone,QGC https://blog.csdn.net/qq_45493236/article/details/13…

Elixir语言的函数实现

Elixir语言中的函数实现 Elixir是一种现代的编程语言,以其并发性、可扩展性和函数式编程特性而闻名。Elixir建立在Erlang虚拟机(BEAM)之上,继承了Erlang强大的并发支持和容错特性。本文将深入探讨Elixir中的函数实现,…

矩阵的因子分解1-奇异值分解

文章目录 矩阵的因子分解1-奇异值分解求法归纳例1. 对矩阵 A ( 0 1 − 1 0 0 2 1 0 ) A \begin{pmatrix} 0 & 1 \\ -1 & 0 \\ 0 & 2 \\ 1 & 0 \end{pmatrix} A ​0−101​1020​ ​ 进行奇异值分解1. 计算 A H A A^H A AHA 的特征值和特征向量2. 将奇异值按…

拆解Java中——“ 注解 ”和“ 注释 ” 的一切区别Ⅱ

前言: 上一篇,我们讲到了: ①注解的引入(简单概述):在jdk5.0的时候 ②注解与注释的区别: 注释 是为了帮助人类阅读代码,不会对程序的执行产生任何影响。注解 是为了给编译器或运行…

vue3配置caddy作为静态服务器,在浏览器地址栏刷新出现404

vue3配置caddy作为静态服务器,在浏览器地址栏刷新出现404 1 情况描述2 原因3 配置 1 情况描述 在vue打包之后,形成dist文件,采用caddy作为静态资源服务器。在浏览器中输入域名时可以访问网站,但是,进过路由导航栏内部…

知识碎片-环境配置

1.添加-i 下载快: pip install onnxruntime-gpu==X.X.X -i https://pypi.tuna.tsinghua.edu.cn/simple 2.ubuntu中没有vim如何更换源 备份:cp sources.list sources.list_bak 重写:echo “deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiver…

SOEM裸机移植

源码地址 https://gitee.com/rathon/apollof429-v2.git 还有一些移植细节可以参考我之前写的一些博客 硬件平台: 正点原子APOLLOF429V2开发板 开发环境 stm32cubemx6.2.0版本,用的库为STM32Cube_FW_F4_V1.26.2,开发软件为STM32cubeide …

MCP(Model Context Protocol)模型上下文协议 进阶篇2 - 消息格式和功能

在开发前,首先带大家熟悉一下MCP协议的消息格式,和所有可能需要进行协商的功能: MCP协议通过JSON-RPC 2.0规范定义了请求、响应和通知三种消息类型,确保通信的标准化和一致性。能力协商机制使客户端和服务器能够动态确定支持的协…