当前位置: 首页 > news >正文

文件类漏洞总结, 文件包含, 文件上传, 文件下载

文件类漏洞总结

一, 文件包含

1. 文件包含绕过

实际环境中不是都是像$_GET['file']; incude $file 这样直接把变量传入包含函数的。
在很多时候包含的变量文件不是完全可控的,比如下面这段代码指定了前缀和后缀:

<?php
$file = S_GET['filename'];
include '/opt/lampp/htdocs/security/' . $file . '/test/test.php';
?>
  1. 目录穿越绕过指定前缀,构造 file =…/…/./etc/passwd

  2. 编码绕过前缀: ../ 的编码为: %2e%2e%2f..\ 的编码为: %2e%2e%5

  3. 二次编码绕过前缀: ../ 的二次编码为: %252e%252e%252f, 的二次编码为: %252e%252e%255C

  4. 对于远程包含,使用 ? 号绕过后缀,此时后缀将变成参数的一部分.

    前端提交: http://xxx/xxx/read.php?filename=http://xxx/xxx/mm.php
    后端包含: http://xxx/xxx/mm.php/test/test.php, 由于后端添加了后缀, 导致路径错误
    "?"绕过 : http://xxx/xxx/read.php?filename=http://xxx/xxx/mm.php?

  5. %00截断后缀,只适用于PHP5.3以前的版本

  6. 使用伪协议 phar:// 构造一个与后缀同路径的压缩包,比如此时 file = phar://test.zip

2. 文件包含防御

(1) 配置open_basedir,只允许包含某个目录下的内容
(2) 不允许文件包含让用户可控,直接写在代码中
(3) 尽量包含一个确定的文件,而不是一个变量或参数值
(4) 检测用户输入参数,确保路径可控
(5) 过滤各种./../ 或经过编码的 %2e%2E
(6) 不使用远程包含,关闭 allow_url_include (默认关闭)
(7) 如果需要使用,则限定域名或路径
(8) 使用白名单,只要不在白名单列表中的内容,则验证不通过

二, 文件上传

1. 文件上传绕过:
1. 前端绕过
2. 类型MIME绕过
3. 黑名单绕过
4. 大小写绕过
5. 双写绕过
6. 空格绕过
7. 点绕过
8. 点空格点绕过
9. 图片马
2. 文件上传防御:

(1) 前后端一起校验,校验后缀名,校验MIME类型
(2) 后缀名的校验必须全部转换成小写进行处理
(3) 使用白名单,不是白名单的一律禁止.
(4) 去除文件名后续的各种符号,如空格
(5) 针对图片文件,使用二次渲染或压缩技术处理图片,并另存
(6) 对文件名进行重命名,则先命名再移动,避免条件竞争
(7) 将上传文件所在目录的权限设置为不可执行

三, 文件下载

1. 文件下载绕过:
参考文件包含绕过.
2. 文件下载防御:

(1)过滤特殊字符"."(点),使用户在url中不能回溯上级目录
(2)正则严格判断用户输入参数的格式
(3)php.ini配置open_basedir限定文件访问范围
(4)将文件路径保存于数据库中,通过 file?id=3 的数据库序号id方式下载文件, 而不是通过具体的文件名.

相关文章:

文件类漏洞总结, 文件包含, 文件上传, 文件下载

文件类漏洞总结 一, 文件包含 1. 文件包含绕过 实际环境中不是都是像$_GET[file]; incude $file 这样直接把变量传入包含函数的。 在很多时候包含的变量文件不是完全可控的&#xff0c;比如下面这段代码指定了前缀和后缀: <?php $file S_GET[filename]; include /opt/…...

SpringBoot篇---第四篇

系列文章目录 文章目录 系列文章目录一、springboot常用的starter有哪些二、 SpringBoot 实现热部署有哪几种方式&#xff1f;三、如何理解 Spring Boot 配置加载顺序&#xff1f; 一、springboot常用的starter有哪些 spring-boot-starter-web 嵌入tomcat和web开发需要servlet…...

Knife4j使用教程(一) -- 在不同版本SpringBoot,选用不同的Knife4j相关的jar包

目录 1. Knife4j的项目背景 2. Knife4j的选择 2.1 选用 Spring Boot 版本在 2.4.0~3.0.0之间 2.2 选用 Spring Boot 版本在 3.0.0之上...

Octave Convolution学习笔记 (附代码)

论文地址&#xff1a;https://export.arxiv.org/pdf/1904.05049 代码地址&#xff1a;https://gitcode.com/mirrors/lxtgh/octaveconv_pytorch/overview?utm_sourcecsdn_github_accelerator 1.是什么&#xff1f; OctaveNet网络属于paper《Drop an Octave: Reducing Spatia…...

SpringSecurity 认证实战

一. 项目数据准备 1.1 添加依赖 <dependencies><!--spring security--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><!--web起步依赖-…...

echarts中横向柱状图的数字在条纹上方

实现效果&#xff1a; 数字在条纹的上方 实现方法&#xff1a;这些数字是用新添加一个坐标轴来实现的 直接添加坐标轴数字显示是在条纹的正右边 所以需要配置一下偏移 完整代码 var option {grid: {left: "3%",right: "4%",bottom: "3%",cont…...

【仙逆】尸阴宗始祖现身,王林修得黄泉生窍诀,阿呆惊险逃生

【侵权联系删除】【文/郑尔巴金】 深度爆料最新集&#xff0c;王林终于成功筑基&#xff0c;这一集的《仙逆》动漫真是让人热血沸腾啊&#xff01;在这个阶段&#xff0c;王林展现出了他的决心和毅力&#xff0c;成功地击杀了藤厉&#xff0c;并采取了夺基大法&#xff0c;从藤…...

C++二叉树剪枝

文章目录 C二叉树剪枝题目链接题目描述解题思路代码复杂度分析 C二叉树剪枝 题目链接 LCR 047. 二叉树剪枝 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定一个二叉树 根节点 root &#xff0c;树的每个节点的值要么是 0&#xff0c;要么是 1。请剪除该二叉树中所有节…...

ZooKeeper中节点的操作命令(查看、创建、删除节点)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

el-table多选表格 实现默认选中 删除选中列表取消勾选等联动效果

实现效果如下&#xff1a; 代码如下&#xff1a; <template><div><el-tableref"multipleTable":data"tableData"tooltip-effect"dark"style"width: 100%"selection-change"handleSelectionChange"><…...

预安装win11的电脑怎么退回正版win10?

对于新购的笔记本 通常来讲预装的系统是全新安装的&#xff0c;是没有之前Windows10系统文件的&#xff0c;无法回退。 可以打开设置-----系统----恢复-----看下是否有该选项。 ------------------------------------------------------------------------------- 若是在上述…...

MATLAB——多层小波的重构

%% 学习目标&#xff1a;多层小波的重构 %% 程序1 clear all; close all; load noissin.mat; xnoissin; [C,L]wavedec(x,3,db1); %小波多层分解 ywaverec(C,L,db1); %重构&#xff0c;必须小波类型一致 emax(abs(x-y)) %重构的误差 %% 程序2 clear all;…...

解锁高效创作艺术!AI助力文章生成与精美插图搭配完美融合

在当今这个信息爆炸的时代&#xff0c;高效创作文章已经成为了一种必备的技能。然而&#xff0c;创作一篇高质量的文章并插入精美插图&#xff0c;往往需要耗费大量的时间和精力。现在&#xff0c;随着AI技术的发展&#xff0c;我们迎来了一个全新的文章创作时代——利用AI高效…...

✔ ★【备战实习(面经+项目+算法)】 10.29学习

✔ ★【备战实习&#xff08;面经项目算法&#xff09;】 坚持完成每天必做如何找到好工作1. 科学的学习方法&#xff08;专注&#xff01;效率&#xff01;记忆&#xff01;心流&#xff01;&#xff09;2. 每天认真完成必做项&#xff0c;踏实学习技术 认真完成每天必做&…...

微服务-Ribbon负载均衡

文章目录 负载均衡原理流程原理源码分析负载均衡流程 负载均衡策略饥饿加载总结 负载均衡原理 流程 原理 LoadBalanced 标记RestTemplate发起的http请求要被Ribbon进行拦截和处理 源码分析 ctrlshiftN搜索LoadBalancerInterceptor&#xff0c;进入。发现实现了ClientHttpRequ…...

UC3845BD1R2G一款专门针对离线和 DC-DC 转换器应用 高性能电流模式PWM控制器

UC3845BD1R2G为高性能固定频率电流模式控制器。专门针对离线和 DC-DC 转换器应用而设计&#xff0c;提供了外部部件极少的成本高效方案。这些集成电路具有振荡器、温度补偿参考、高增益误差放大器、电流传感比较器和高电流图腾柱输出&#xff0c;适用于驱动功率 MOSFET。还包括…...

vivo自研AI大模型即将问世,智能手机行业加速迈向AI时代

当前&#xff0c;以大模型为代表的人工智能技术已发展为新一轮科技革命和产业变革的重要驱动力量&#xff0c;被视作推动经济社会发展的关键增长极。 AI大模型潮起&#xff0c;千行百业走向百舸争流的AI创新应用期&#xff0c;前沿信息技术向手机、PC、车机等消费级终端加速渗…...

探索JavaScript事件流:DOM中的神奇旅程

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 引言 1. 事件流的发展流程 1.1 传统的DOM0级事件 1.2 DOM2级事件和addEventListener方法 1.3 W3C DOM3级…...

听GPT 讲Rust源代码--library/std(8)

题图来自Why is Rust programming language so popular?[1] File: rust/library/std/src/sys/sgx/abi/reloc.rs 在Rust源代码中&#xff0c;sgx/abi/reloc.rs文件的作用是定义了针对Intel Software Guard Extensions (SGX)的重定位相关结构和函数。 该文件中的Rela 结构定义了…...

Hbase基本使用,读写原理,性能优化学习

文章目录 HBase简介HBase定义HBase数据模型**HBase** **逻辑结构****HBase** **物理存储结构****HBase** **基本架构** HBase 入门**HBase** **安装部署****HBase** 配置文件**HBase** 启动停止**HBase** **访问页面****HBase** **高可用****HBase Shell****HBase API**HBaseCo…...

终极免费方案:3分钟掌握英雄联盟身份伪装完整指南

终极免费方案&#xff1a;3分钟掌握英雄联盟身份伪装完整指南 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank LeaguePrank是一款基于官方LCUAPI开发的英雄联盟个性化展示工具&#xff0c;通过安全合规的方式实现游戏身份伪装、…...

AI混音师登场:音频自动混音技术全景解读与实战展望

AI混音师登场&#xff1a;音频自动混音技术全景解读与实战展望 引言 在AIGC浪潮席卷内容创作的今天&#xff0c;音频制作领域正经历一场静默革命。从专业录音棚到手机直播间&#xff0c;“一键母带”、“智能平衡”功能已不再陌生。这背后&#xff0c;正是音频自动混音技术在驱…...

嵌入式系统错误处理机制与实现

嵌入式系统中的错误处理机制深度解析1. 错误概念与分类1.1 错误分类体系在嵌入式系统开发中&#xff0c;错误处理是确保系统可靠性的关键环节。从严重性维度分析&#xff0c;程序错误可分为两类&#xff1a;致命性错误&#xff1a;系统无法执行恢复操作&#xff0c;典型处理方式…...

DNF联机搭建避坑指南:从‘花枝登录器’授权到PVF加密的全流程解析

DNF私服联机搭建实战&#xff1a;从授权配置到加密通信的完整解决方案 当几个朋友想搭建一个私人DNF服务器享受联机乐趣时&#xff0c;最令人头疼的往往不是服务端的启动&#xff0c;而是如何让客户端顺利连接。本文将聚焦于那些让"单机变联机"的关键技术环节——登录…...

Keil多工程工作空间创建与管理实践

Keil系列教程14&#xff1a;创建多工程工作空间的技术实践1. 项目概述在嵌入式开发中&#xff0c;当项目复杂度增加时&#xff0c;往往需要管理多个相互关联的工程。Keil MDK-ARM开发环境提供了多工程工作空间&#xff08;Multi-Project Workspace&#xff09;功能&#xff0c;…...

VINS-Mono跑EUROC数据集后,如何用evo工具包进行轨迹精度评估与可视化(附完整命令)

VINS-Mono轨迹精度评估实战&#xff1a;从EUROC数据集到evo工具包全流程解析 在完成VINS-Mono算法在EUROC数据集上的运行后&#xff0c;如何科学评估其轨迹精度成为算法优化和论文撰写的关键环节。本文将深入讲解使用evo工具包进行定量分析的完整流程&#xff0c;涵盖指标计算、…...

Qwen All-in-One部署实战:极简依赖,快速搭建AI应用

Qwen All-in-One部署实战&#xff1a;极简依赖&#xff0c;快速搭建AI应用 1. 引言&#xff1a;轻量级AI服务的新选择 在当今AI应用遍地开花的时代&#xff0c;开发者们常常面临一个两难选择&#xff1a;要么使用功能强大但资源消耗巨大的模型&#xff0c;要么选择轻量级但功…...

3个ONNX运行时故障的系统性修复方案:ComfyUI DWPose预处理器实战指南

3个ONNX运行时故障的系统性修复方案&#xff1a;ComfyUI DWPose预处理器实战指南 【免费下载链接】comfyui_controlnet_aux 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 在ComfyUI工作流中&#xff0c;DWPose预处理器作为姿态估计的核心组件&…...

避坑指南:MATLAB调用ROS2话题时,消息类型错误‘std_msgs/String’怎么办?

MATLAB与ROS2通信避坑指南&#xff1a;消息类型错误的深度解析与实战解决方案 当你在MATLAB中尝试与ROS2系统建立通信时&#xff0c;是否遇到过这样的报错&#xff1a;"Error using ros2subscriber. The message type std_msgs/String is invalid."&#xff1f;这看似…...

华为无线网络配置实战:从零搭建企业级Wi-Fi环境

1. 企业级Wi-Fi环境搭建前的准备 第一次接触华为无线网络设备时&#xff0c;我被那一堆专业术语搞得头晕眼花。AC控制器、AP接入点、核心交换机...这些设备到底该怎么连接&#xff1f;经过多次实战&#xff0c;我发现只要掌握几个关键点&#xff0c;搭建企业Wi-Fi其实没那么复杂…...