文件上传-php

news2024/11/15 23:23:26

image.png

查找方式

***(1) 黑盒 查找(upload) 扫描
(2) 应用型 窗口 上传中心或者后台中心 上传 Ps:后台是后台 权限是权限
(3) 会员中心
(4) 白盒

基本函数定义 写前端的
Enctype 上传类型

Method 提交方式

Onsubmit 鼠标的时间

Action="放在指定文件"

Php 接受表单数据 

isset()函数 是查看有没有点击 提交

Trim()  将字符串的 两边的空格 去除掉    替换成空

 Strrchr(语句字符串,'.')  意思就是 从.开始断开 输出 .后的语句

Strtolower() 转换小写

Str_ireplace('指定字符','',指定字符串)

将指定字符串里面的字符转换为空格

Array()  是一个数组

In_array('字符串','数组')  判断字符串是不是在数组中
文件上传代码:
PHP中上传一个文件建一个表单要比ASP中灵活得多。具体的看代码。

如: 

代码如下:

<form enctype="multipart/form-data" action="upload.php" method="post"> 

<input type="hidden" name="MAX_FILE_SIZE" value="1000"> 

<input name="myFile" type="file"> 

<input type="submit" value="上传文件"> 

</form> 

$_FILES 

$_POST 

$_GET 

等函数获取表单内容。 

今天我们着重讲$_FILES函数。  当客户端提交后,我们获得了一个$_FILES 数组 

$_FILES数组内容如下: 

$_FILES['myFile']['name'] 客户端文件的原名称。 

$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。 

$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。 

$_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量) 

UPLOAD_ERR_OK 

值:0; 没有错误发生,文件上传成功。 

UPLOAD_ERR_INI_SIZE 

值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 

UPLOAD_ERR_FORM_SIZE 

值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 

UPLOAD_ERR_PARTIAL 

值:3; 文件只有部分被上传。 

UPLOAD_ERR_NO_FILE 

值:4; 没有文件被上传。 

值:5; 上传文件大小为0. 

文件被上传结束后,默认地被存储在了临时目录中,这时您必须将它从临时目录中删除或移动到其它地方,如果没有,则会被删除。也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。所以在删除之前要用PHP的 copy() 函数将它复制到其它位置,此时,才算完成了上传文件过程。

可以看到这个文件上传的机制 没有type的是相当于post传参有type的是****$FILE上传的文件

绕过

前端过滤:

1.删除掉前端过滤代码

2.禁用js (一般不推荐)

3.抓包修改 (ps:但是禁用之后可能就无法抓到数据包,例如只用js代码 只在前端保存)

mime类型

Image/gif

.html文件 text/html

.xml文件 text/xml

.png文件 image/png

.jpeg/.jpg image/jpeg

.gif image/gif

**mime类型其实就是 检查文件头

Getimagesize()函数 读取图像的信息 如果这种

黑名单

黑名单 : 一些脚本文件绝对不允许上传的
白名单 :相对应的 文件才能

如果黑名单内部并没有搞到 Php5 或者phtml文件后缀 那么就可以通过这种后缀名字来 绕过但是还是要考虑中间件是否支持
**保证在httpd.conf 中保证他可以解析

  • .php
  • .php3
  • .php4
  • .php5
  • .phtml
  • php1
  • php2
后缀名的大小写验证
后缀强制

有时候文件上传时候其实 后缀名加上 /. 或者 直接加一个 . 不影响木马后缀

如果源码没有过滤空格的话

那么可以 在数据包将空格放在后缀名的后面 那么系统就会识别.php空格

格式匹配就会有绕过

双写
不过滤 ‘.’
::$DATA **windows php
环境下下的 在后缀名之后加上 ::$DATA 可以 绕过检查  在**php版本五

如果说不能绕过那可能就是::$DATA被 去除或者加了黑名单
前者可以双写绕过

示例[[upload1-9.md#3#]]

一次过滤或者 循环过滤 绕过点和空格的过滤问题
过滤删除后缀名的的代码那么可以重写

白名单

上传html 造成xss
.htaccess

apache的 一个 配置文件 htaccess文件时Apache服务中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮助我们实现:网页301重定向、自定义404错误页面,改变文件扩展名、允许/阻止特定的用户或者目录的访问,禁止目录列表,配置默认文档等功能

例如先上传 .htaccess文件 则

<FilesMatch “.jpg”> SetHandler application/x-httpd-php

将jpg格式文件当成php代码执行
**注意点必须是一定要在 httpd.conf中找到 allowovertide 设置为allow

​%00 编码 和 0x00 十六进制

***原理解释:

了解%00实际上我们要先了解0x00,0x00实际上是一个十六进制表示方式,实际上就是表示ascii码值为0,函数在处理这个字符的时候会把这个字符当做结束符,他们就读取到这里认为这一段结束了。因此如果说我们在进行参数传递使用这个\0 我们可以截断后面的内容。

**GET传参

直接对应 1.php%00 ,对应解释一下这个get传参的%00是经历过url编码的。

**POST传参

在post数据包后面以十六进制修改0X00

​条件竞争

条件竞争,前提是你上传一个文件,文件会保存,但是之后会有格外的操作。例如判断后缀或者是删除修改等。存在一个逻辑安全问题 ,首先已经保存web.jpg了此时后面的又一个文件操作 , 但是如果说我占用这个 web.jpg.此时后面的操作无法进行。但是我就可以一直上传对应的webshell ,然后使用脚本一直进行访问对应的webshell

文件解析漏洞

文件夹类型

Image.asp/1.jpg

那么此时是 1.jpg 按照asp执行

文件类型

1.php:2.jpg

这也是按照php解析

Nginx 1.jpg/1.php

二次渲染

其实针对于,图片解析来讲,如果说我上传了一个图片。他会进行二次的修改和渲染,其实我个人觉得这是一个怎么说呢?这是一个对于有解析漏洞的一个前提。

**解决:

  1. 首先上传一张正常的图片,找到对应的保存位置。同时下载对应保存好的图片。
  2. 前后两张图片进行比较,找到未渲染的地方(也就是没有修改的地方),插入我们的木马。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单计算器(python基础代码撰写)

简单计算器&#xff1a;仅适用无括号加减乘除&#xff0c;算法初阶&#xff0c;代码基础&#xff0c;不调库或模块“纯”手撕。 (笔记模板由python脚本于2024年09月22日 12:08:02创建&#xff0c;本篇笔记适合喜欢用python解决实际问题的coder翻阅) 【学习的细节是欢悦的历程】…

Java反射机制入门:解锁运行时类信息的秘密

反射技术&#xff1a; 其实就是对类进行解剖的技术 类中有什么&#xff1f;构造方法 成员方法成员变量 结论&#xff1a;反射技术就是把一个类进行了解剖&#xff0c;然后获取到 构造方法、成员变量、成员方法 反射技术的应用案例&#xff1a; idea框架技术&#xff1a;Spr…

【VMware】虚拟机安装

文章目录 一、安装二、登录配IP1.登录成功后&#xff1a;2.设置DNS地址3.重启网络服务 一、安装 1.tools文件中&#xff0c;准备VMware软件&#xff0c;与CentOS7.4安装包 详情操作 2. VMware软件安装成功后查看网络连接&#xff0c;出现新的以太网&#xff0c;Vmnet1&#xf…

MiniCPM-V 2.6训练时fuse_adam报错

原本pip install deepspeed安装了0.15.1版本的&#xff0c;但是在进行sft训练的时候还是报错。大概就是fuse_adam这个op编译有错&#xff0c;c版本要大于17什么的&#xff0c;一堆错。看了一堆解决方案尝试后发现如下这样的有用&#xff1a; 1.下载DeepSpeend源码 git clone ht…

打造灵活DateTimePicker日期时间选择器组件:轻松实现时间的独立清除功能

element ui中日期和时间选择器&#xff08;DateTimePicker&#xff09;是一个常见且重要的组件。它允许用户轻松地选择日期和时间&#xff0c;极大地提升了用户体验。然而&#xff0c;在某些场景下&#xff0c;用户可能需要更细粒度的控制&#xff0c;例如单独清除已选择的时间…

4款思维导图在线工具,新手速来!

想要工作更顺畅&#xff0c;办公软件少不了&#xff01;让咱们工作生活变得更加井井有条的小能手——思维导图软件。没错&#xff0c;就是那些能让你在头脑风暴、项目规划、会议记录时&#xff0c;思路瞬间清晰&#xff0c;逻辑一目了然的神奇工具。我亲身体验过的四款款热门软…

Web端云剪辑解决方案,提供前端产品源码

美摄科技作为业界领先的视频技术服务商&#xff0c;匠心打造Web端云剪辑解决方案&#xff0c;以前沿技术赋能企业用户&#xff0c;开启视频创作与编辑的新纪元。 【云端赋能&#xff0c;重塑剪辑体验】 美摄科技的Web端云剪辑解决方案&#xff0c;颠覆了传统视频编辑的局限&a…

Excel VLOOKUP函数怎么用?vlookup函数的使用方法及案例

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f50e; 在Excel的世界里&#xff0c;VLOOKUP函数无疑是查询和数据分析中的明星。无论是从庞大的数据表中提取特定信息&#xff0c;还是进行数据的快速匹配&#xff0c;VLOOKUP都能大显身手。今天&#xff0c;我们将深…

多机器学习模型学习

特征处理 import os import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.model_selection import StratifiedShuffleSplit from sklearn.impute import SimpleImputer from sklearn.pipeline import FeatureUnion fr…

行业副教授亲授,好评如潮丨合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等技能,助力精准决策!

目录 第一章 InSAR技术应用现状分析及其发展 第二章 InSAR原理、技术方法讲解 第三章 数据处理环境建立与软件熟悉 第四章 SAR影像数据获取、DEM数据获取 InSAR数据前处理技术 第五章 InSAR地形三维重建 第六章 DInSAR形变信息提取 第七章 时序InSAR技术形变速率与形变时…

【C++】检测TCP链接超时——时间轮组件设计

目录 引言 时间轮思想 设计的核心思路 完整代码 组件接口 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 对于高并发的服务器来说&#xff0c;链接是一种比较珍贵的资源&#xff0c;对不活跃的链接应该及时释放。判断连接是否活跃的策略是——在给定的时间内&#…

04 面部表情识别:Pytorch实现表情识别-表情数据集训练代码

总目录:人脸检测与表情分类 https://blog.csdn.net/whiffeyf/category_12793480.html 目录 0 相关资料1 面部表情识数据集2 模型下载3 训练0 相关资料 面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码):https://blog.csdn.net/guyuealian/article/details/1…

017_FEA_CSG_in_Matlab新的统一有限元分析工作流之2D几何

Matlab新的统一有限元分析工作流 从2023a开始&#xff0c;Matlab提供了一个统一有限元分析工作流&#xff08;UFEAW&#xff0c;unified finite element analysis workflow&#xff09;。 这个新的工作留提供一个统一的接口来求解三类问题&#xff0c;并且可以用同一套数据随…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建搭建Flink

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建搭建Flink Apache Flink是一个分布式大数据计算引擎&#xff0c;专为处理无界和有界数据流上的有状态计算而设计&#xff0c;以其高吞吐量、低延迟和高性能在实时流处理和批量计算领域脱颖而出&#xff0c;Flin…

Vue2电商项目(四) Detail模块

文章目录 一、配置Detail路由1. 将Detail组件配置为路由组件2. 将路由配置文件拆分3. 声明式导航跳转到Detail跳转时存在的问题&#xff1a;页面滚动条还在下边 二、配置API及vuex三、放大镜及下方轮播图1. Detail组件传递放大镜数据2. 读取vuex数据的经典错误undefined3. 放大…

个人如何做量化?我想进行量化交易需要哪些条件?QMT/PTrade量化软件?

个人如何做量化&#xff1f;我想进行量化交易需要哪些条件&#xff1f;QMT&#xff0c;PTrade量化软件&#xff1f; 量化交易策略是一种基于数学模型和统计分析的交易方法&#xff0c;通过计算机程序自动执行交易指令&#xff0c;以实现稳定、可持续的收益。这种策略的核心思想…

【研赛E题成品论文】24华为杯数学建模研赛E题成品论文+可运行代码丨免费分享

2024华为杯研究生数学建模竞赛E题成品论文已出&#xff01; E题 高速公路应急车道紧急启用模型 一、问题一模型建立与求解 1.1 问题一求解思路 赛题要求我们基于四个观测点的视频数据&#xff0c;提取交通流参数并分析这些参数随时间的变化规律。交通流参数包括&#xff1a;…

【秋招笔试题】多多排序

解法&#xff1a;简单语法题 package com.sky;import java.util.*;public class Test1 {public static void main(String[] args) {Scanner sc new Scanner(System.in);int N sc.nextInt();int M sc.nextInt();List<String> words new ArrayList<>(N);for (in…

[系统设计总结] - Proximity Service算法介绍

问题描述 Proximity Service广泛应用于各种地图相关的服务中比如外卖&#xff0c;大众点评&#xff0c;Uber打车&#xff0c;Google地图中&#xff0c;其中比较关键的是我们根据用户的位置来快速找到附近的餐厅&#xff0c;司机&#xff0c;外卖员也就是就近查询算法。 主流的…

再论单源最短路径-SPFA

之前只是背了SPFA的算法模板&#xff0c;但是没有真正理解其中含义。这里复习时再次进行理解。 首先&#xff0c;正常的单源最短路径都会由下面的一个结构来维护“距离”&#xff0c;这个结构可以用一个数字dist[N]来描述&#xff0c;其中下标为顶点编号&#xff0c;值为“暂时…