php文件上传

文章目录

  • 文件上传机制
  • 文件上传脚本
  • 文件上传绕过
    • php后缀替换为空
    • web服务器的解析漏洞绕过
      • nginx
      • iis
      • apache
  • 高级文件上传
    • nginx自定义配置文件(默认三分钟刷新一次)
    • 服务端内容检测
    • 结合伪协议使用
    • 配合日志包含
    • 只允许图片上传
  • 上传实战训练

文件上传机制

文件上传本质上是对服务器端的一个写操作
向服务器端上传的php文件会被放到\tmp\php???临时文件夹下,在脚本执行完后,临时文件夹中的文件会被销毁

文件上传脚本

脚本为html文件

<form action="index.php" enctype="multipart/form-data" method="post"><input name="file" type="file" /><input type="submit" value="upload"/>
</form>

在这里插入图片描述

文件上传绕过

php后缀替换为空

  • 采用双写绕过:pphphp

web服务器的解析漏洞绕过

nginx

基于错误的nginx和php=fpm配置,当我们访问\shell.txt\1.php时,如果1.php不存在,服务器端就会按照php去解析shell.txt。利用这个特性,可以先上传shell.txt,再访问一个不存在的php文件

iis

如果iis版本为6.0,目录的后缀是a.php,那么目录中的文件就会按照php解析去执行

apache

上传多后缀时,apache会从后向前解析,直到自己能解析的后缀,比如test.php.lally,会被解析成test.php

高级文件上传

nginx自定义配置文件(默认三分钟刷新一次)

.user.ini
在配置文件使用auto_apppend_file=1.txt使所有文件包含1.txt,执行里面的php代码
任意找一个php文件,利用1.txt里的一句话木马执行php代码即可

服务端内容检测

如果服务端进行eval,$_POST,php等关键词的检测,首先使用二分法(删除部分内容)确定黑名单,再结合.user.ini和绕过策略进行绕过,如base64编码,使用$_REQUEST,$_COOKIE等超全局变量进行绕过在这里插入图片描述

结合伪协议使用

auto_prepend_file=php://input

这样就可以在首页的php文件里使用伪协议了

配合日志包含

  • 日志包含,就是通过将恶意代码通过user-agent等方式传入日志中,再包含日志,就会执行其中的php代码

日志文件默认路径
\var\log\nginx\access.log在这里插入图片描述
注意代码一定不要写错,否则报错了就只能重置环境

只允许图片上传

通过XBM格式图片的特性绕过getimagesize函数检测

在配置文件中加入
#define hight100
#define width 100

就会把这个文件当成图片来处理,并且图片的高度和宽带为100,即完成了绕过,在语句后加入其他代码可正常执行

上传实战训练

在这里插入图片描述
显然只允许上传图片,用xmp的方法试一下,发现对后缀名有限制,必须是.png
那怎么办呢?看到提示,前台校验不可靠,意思就是说,在我们上传的时候,前端会做一个后缀名检测,如果是.png,才会发出数据包,在发出数据包后,将包拦截下来,后缀改回.php即可在这里插入图片描述
成功绕过,接下来找flag即可


如果在后端加入了判断png后缀的逻辑,仅凭抓包更改后缀是绕不过去的,但是如果后端判断的逻辑不够严密(如采用黑名单只校验几个后缀),我们就可以把.user.ini这样的配置文件偷渡过去,在.user.ini里使用文件包含

抓包改后缀绕过前端检测
在这里插入图片描述

auto_prepend_file=1.png
配置文件中写入
在1.png中写入一句话木马,接着上传即可


我们继续看,如果后端的检测机制更厉害一点,能够检测到一句话木马中的一些关键词并过滤怎么办呢在这里插入图片描述
先分析一下一句话木马

<?php eval($_POST[1]);?>

php是大概率被检测到的,可以换成短标记<?=或script标签在这里插入图片描述
3和4需要php配置开启一些项,所以不一定能用

POST的替换策略在上文有详细说明

那么如果一句话木马在上传中被禁到用不了(比如把<禁用了),又该怎么办呢?答案是日志包含

\var\log\nginx\access.log

通过user-agent传入恶意代码并执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22082.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

播放器系列1——总概述

播放器核心架构 模块解释 文件读取 读取视频文件、读取网络文件、读取音频文件&#xff0c;大概分为这三种&#xff0c;目前代码中仅实现了读取视频文件播放&#xff0c;也就是当没有video数据的时候播放器不可使用。 解复用 容器指的是多媒体文件中的封装格式&#xff0c;…

【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较

常见中间件api操作及性能比较 ☝️ MySQL crud操作✌️ maven依赖✌️ 配置✌️ 定义实体类✌️ 常用api ☝️ Redis crud操作✌️ maven依赖✌️ 配置✌️ 常用api ☝️ MongoDB crud操作✌️ maven依赖✌️ 配置文件✌️ 定义实体类✌️ MongoDB常用api ☝️ ES crud操作 ⭐️…

【进程与线程】Linux 线程、同步以及互斥

每个用户进程有自己的地址空间。 线程是操作系统与多线程编程的基础知识。 系统为每个用户进程创建一个 task_struct 来描述该进程&#xff1a;该结构体中包含了一个指针指向该进程的虚拟地址空间映射表&#xff1a; 实际上 task_struct 和地址空间映射表一起用来表示一个进程…

实现动态翻转时钟效果的 HTML、CSS 和 JavaScript,附源码

实现动态翻转时钟效果的 HTML、CSS 和 JavaScript 在现代网页设计中&#xff0c;动画效果可以极大地增强用户体验。本文将介绍如何利用 HTML、CSS 和 JavaScript 创建一个动态翻转时钟的效果&#xff0c;模拟经典机械翻页时钟的视觉效果。我们将通过详细的步骤讲解如何实现时钟…

Spring Boot与MyBatis

Spring Boot与MyBatis的配置 一、简介 Spring Boot是一个用于创建独立的、基于Spring的生产级应用程序的框架&#xff0c;它简化了Spring应用的初始搭建以及开发过程。MyBatis是一款优秀的持久层框架&#xff0c;它支持定制化SQL、存储过程以及高级映射。将Spring Boot和MyBa…

1.16作业

1 进注册界面&#xff0c;第一次以为抓包选把isadmin ture了就好 第二次尝试&#xff0c;勾选is admin&#xff0c;有需要invitecode&#xff08;经典&#xff09; 2 p r**5 r**4 - r**3 r**2 - r 2023 q r**5 - r**4 r**3 - r**2 r 2023 n 25066797992811602609904…

LeetCode 2209.用地毯覆盖后的最少白色砖块:记忆化搜索之——深度优先搜索(DFS)

【LetMeFly】2209.用地毯覆盖后的最少白色砖块&#xff1a;记忆化搜索之——深度优先搜索(DFS) 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-white-tiles-after-covering-with-carpets/ 给你一个下标从 0 开始的 二进制 字符串 floor &#xff0c;它表示地…

「正版软件」PDF Reader - 专业 PDF 编辑阅读工具软件

PDF Reader 轻松查看、编辑、批注、转换、数字签名和管理 PDF 文件&#xff0c;以提高工作效率并充分利用 PDF 文档。 像专业人士一样编辑 PDF 编辑 PDF 文本 轻松添加、删除或修改 PDF 文档中的原始文本以更正错误。自定义文本属性&#xff0c;如颜色、字体大小、样式和粗细。…

【报错解决】vue打开界面报错Uncaught SecurityError: Failed to construct ‘WebSocket‘

问题描述&#xff1a; vue运行时正常&#xff0c;但是打开页面后报错 Uncaught SecurityError: Failed to construct WebSocket: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. 解决方案&#xff1a; 在项目列表中的public下的ind…

骶骨神经

骶骨肿瘤手术后遗症是什么_39健康网_癌症 [健康之路]匠心仁术&#xff08;七&#xff09; 勇闯禁区 骶骨肿瘤切除术

wps中的js开发

严格区分大小写 /*** learn_js Macro*/ function test() {Range(D7).Value2Selection.Value2; // Selection.formula "100" }function Workbook_SheetSelectionChange(Sh, Target) {if(Sh.Name Sheet1) {test();}}function test2() {// 把I4单元格及其周边有数的单…

书生大模型实战营12-InternVL 多模态模型部署微调

文章目录 L2——进阶岛InternVL 部署微调实践0.开发机创建与使用1.环境配置1.1.训练环境配置1.2.推理环境配置 2.LMDeploy部署2.1.LMDeploy基本用法介绍2.2.网页应用部署体验2.3 出错解决2.3.1 问题12.3.2 问题2 3.XTuner微调实践3.1.准备基本配置文件3.2.配置文件参数解读3.3.…

深度学习之图像回归(二)

前言 这篇文章主要是在图像回归&#xff08;一&#xff09;的基础上对该项目进行的优化。&#xff08;一&#xff09;主要是帮助迅速入门 理清一个深度学习项目的逻辑 这篇文章则主要注重在此基础上对于数据预处理和模型训练进行优化前者会通过涉及PCA主成分分析 特征选择 后…

安科瑞能源物联网平台助力企业实现绿色低碳转型

安科瑞顾强 随着全球能源结构的转型和“双碳”目标的推进&#xff0c;能源管理正朝着智能化、数字化的方向快速发展。安科瑞电气股份有限公司推出的微电网智慧能源管理平台&#xff08;EMS 3.0&#xff09;&#xff0c;正是这一趋势下的创新解决方案。该平台集成了物联网&…

基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

论文笔记-WSDM2024-LLMRec

论文笔记-WSDM2024-LLMRec: Large Language Models with Graph Augmentation for Recommendation LLMRec: 基于图增强的大模型推荐摘要1.引言2.前言2.1使用图嵌入推荐2.2使用辅助信息推荐2.3使用数据增强推荐 3.方法3.1LLM作为隐式反馈增强器3.2基于LLM的辅助信息增强3.2.1用户…

优化YOLOv8:如何利用ODConv卷积解决复杂背景下的目标识别问题

文章目录 1. YOLOv8的现状与挑战1.1 ODConv的提出背景1.2 ODConv卷积的原理 2. YOLOv8与ODConv的结合2.1 ODConv集成到YOLOv8中的架构2.2 代码实现示例2.3 性能评估与改进 3. ODConv的实际应用与优化3.1 ODConv在不同数据集上的表现3.1.1 COCO数据集3.1.2 VOC数据集3.1.3 自定义…

DPVS-2:单臂负载均衡测试

上一篇编译安装了DPVS&#xff0c;这一篇开启DPVS的负载均衡测试 &#xff1a; 单臂 FULL NAT模式 拓扑-单臂 单臂模式 DPVS 单独物理机 CLINET&#xff0c;和两个RS都是另一个物理机的虚拟机&#xff0c;它们网卡都绑定在一个桥上br0 &#xff0c; 二层互通。 启动DPVS …

Maven导入hutool依赖报错-java: 无法访问cn.hutool.core.io.IORuntimeException 解决办法

欢迎大家来到我的博客~欢迎大家对我的博客提出指导&#xff0c;有错误的地方会改进的哦~点击这里了解更多内容 目录 一、报错二、解决办法 一、报错 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-captcha</artifactId> </de…

flowable适配达梦数据库

文章目录 适配相关问题无法从数据库产品名称“DM DBMS”中推断数据库类型分析解决 构建ibatis SqlSessionFactory时出错&#xff1a;inStream参数为null分析解决 liquibase相关问题问题一&#xff1a;不支持的数据库 Error executing SQL call current_schema: 无法解析的成员访…