news 2026/5/14 16:58:16

5-.点+空格+点绕过 || .user.ini绕过

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5-.点+空格+点绕过 || .user.ini绕过

5-.点+空格+点绕过 || .user.ini绕过

$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");$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.'/'.$file_name;if(move_uploaded_file($temp_file,$img_path)){$is_upload=true;}else{$msg='上传出错!';}}else{$msg='此文件类型不允许上传!';}}else{$msg=UPLOAD_PATH.'文件夹不存在,请手工创建!';}}

三种绕过方法

  1. 这里的绕过方法利用了Windows系统的特性。尽管源码做了去空格、去点等处理,但对于. .​这种特殊格式的清理并不彻底,导致文件名在检测后从shell.php. .​变为shell.php.​。Windows系统在保存文件时,会自动去掉文件名末尾的点和不影响识别的空格,最终保存为shell.php,从而实现了绕过。

  1. 如果Apache版本较老(1.x-2.x),还存在一个解析漏洞:当遇到无法识别的后缀时,会从右向左解析,直到识别出.php​后缀。你可以上传一个像shell.php.unknown这样的文件,利用这个解析漏洞来执行。

    **经过测试Apache 2.4.39版本不存在这个解析漏洞**

  1. 利用.user.ini动态包含.user.ini​是PHP支持的配置文件,可以自动包含其他文件。但这也要求上传目录下必须有.php​文件(例如readme.php)来触发包含,这是一种隐蔽性和成功率都较高的方法。

在操作前,需要确认环境是否满足以下条件:

  • PHP 运行模式必须为 CGI / FastCGI​:。phpinfo()​ 中的Server API值可以确认这一点。

  • 目标路径下已存在一个正常的 PHP 文件​:readme.php

  • PHP 版本需为 5.3.0 或更高:这是.user.ini支持的最低版本。

  • .user.ini文件本身​:上传时后缀名必须是.ini​,并且该文件在黑/白名单之外(在upload-labs Pass-05中,.ini后缀不在黑名单内,因此允许上传)。

  • PHP 配置相关php.ini​ 中user_ini.filename​ 未被设置为空字符串,user_ini.cache_ttl未设置为0。

    • user_ini.filename​ 指令被注释或未显式设置时,PHP 会使用​默认值

      ​​user_ini.filename = ".user.ini"

      user_ini.cache_ttl = 300(缓存 300 秒,即 5 分钟)

  • 拥有足够的文件系统权限:Web 服务器用户需要对目录有写入.user.ini的权限

下面就是具体的操作了:

  1. 制作.user.ini文件:创建一个名为.user.ini​ 的文本文件,内容如下,它告诉 PHP 去包含一个叫做shell.jpg的文件。

    auto_prepend_file = shell.jpg

    或者使用auto_append_file指令,功能类似。

  2. 制作图片木马文件:创建一个图片木马,比如shell.jpg。用文本编辑器打开,在图片文件尾写入 PHP 代码。

  3. 依次上传文件​:先上传.user.ini​ 文件。上传成功后,再上传图片木马shell.jpg

  4. 触发 Webshell:访问该目录下的readme.php

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 16:50:02

基于MCP协议桥接Telegram Bot生态:构建AI助手统一技能库

1. 项目概述与核心价值最近在折腾AI Agent和自动化工作流,发现一个痛点:很多优秀的工具和模型都藏在Telegram Bot里,但想把它们无缝集成到自己的AI应用里,却总是要写一堆胶水代码,处理API调用、消息解析、状态管理这些…

作者头像 李华
网站建设 2026/5/14 16:46:17

2026届学术党必备的六大AI科研工具推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 对于学术论文创作的整个流程而言,AI 工具拥有数据快速梳理的功能,还…

作者头像 李华
网站建设 2026/5/14 16:46:16

NoFences:重新定义Windows桌面空间管理的开源解决方案

NoFences:重新定义Windows桌面空间管理的开源解决方案 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 在数字工作时代,桌面空间管理已成为影响工作效率…

作者头像 李华
网站建设 2026/5/14 16:42:28

【数据库】时序数据库选型指南:从数据模型到大模型智能分析

文章目录引言:时序数据的爆发时代一、时序数据模型:理解数据本质是选型的第一步1.1 什么是时序数据?1.2 时序数据的三层模型结构二、为什么需要专门的时序数据库?三、前沿能力:时序大模型开启智能分析时代3.1 IoTDB 支…

作者头像 李华
网站建设 2026/5/14 16:41:13

不只是搭平台,更要管好数据:2026年数据中台服务商治理能力TOP榜

一、引言:数据中台的价值上限,由治理能力决定经过近十年的市场洗礼,数据中台已从概念热词沉淀为企业数字化底座的核心组件。2026年,行业的焦点正在发生关键迁移:前一阶段企业集中投入在数据中台的基建层——数仓用什么…

作者头像 李华
网站建设 2026/5/14 16:40:11

使用Postman测试grpc接口

笔者的数据库是Sqilte,数据文件是:pedatabase.db1)首先启动我的grpc服务:2)启动Postman,配置测试服务接口:3)3.1 我的grpc服务显示0.0.0.0的ip,说明本地测试,…

作者头像 李华