文件上传漏洞(upload靶场)

目录

Pass-01:前端绕过

方法一:浏览器禁用js

方法二:直接修改或删除js脚本

方法三:修改后缀绕过

Pass-02:服务器检测

Pess-03:黑名单绕过

Pass-04:.htaccess文件

Pass-05:windows特性和user.ini

方法一:php.自动解析为php(windows下)

方法二:.user.ini绕过

Pass-06:大小写绕过

Pass-07:空格绕过

Pass-08:尾部点绕过

Pass-09:::$DATA特殊符号绕过

Pass-10:利用  '. .'绕过 

Pass-11:双写绕过

Pass-12:get %00截断

Pass-13:post %00截断

Pass-14:照片马(二进制过滤文件类型)

Pass-15:照片马(返回数组过滤文件类型)

Pass-16:照片马(第一字节过滤文件类型)


Pass-01:前端绕过

直接上传会被前端js代码过滤

代码分析第一关是前端过滤类型

方法一:浏览器禁用js

利用浏览器的设置可以禁用js,从而绕过过滤限制

方法二:直接修改或删除js脚本

用Burpsuit,开启拦截pass-01,打开burpsuit界面,Do intercept-Response to request选项,可以得到这次发包的响应包

forward放包找到前端验证部分

直接删除前端js白名单

上传成功

方法三:修改后缀绕过

使用Burpsuit抓包修改后缀达到绕过目的

先将web.php文件后缀修改为jpg(web.jpg绕过前端)

拦截到requset修改web.jpg

修改后send的一下

上传成功

Pass-02:服务器检测

直接上传,提示文件类型不正确

代码分析:

会判断upload_file的类型从而其实文件类型不正确

用BurpSuite抓包看到content-type:application/octet-stream

那就request修改类型为image/jpeg

成功上传

查看上传php文件

Pess-03:黑名单绕过

直接上传 提示不允许上传.asp、 .aspx、.php、 .jsp

代码分析:是一个文件后缀过滤的黑名单

Pass-04:.htaccess文件

源码分析:本关过滤了大多的后缀

但是没有过滤.htaccess   .htaccess文件,指在特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。

此功能在httpd.conf中的ALLowOverride ALL 字段决定

所以我们可以建立一个.htaccess文件,文件内容为:

php
<FilesMatch "web.jpg">SetHandler application/x-httpd-php
</FilesMatch>
//将该目录以及子目录下的web.jpg当作php文件执行

上传.htaccess文件

接着上传web.php修改后缀为web.jpg

访问上传文件web.jpg成功解析

Pass-05:windows特性和user.ini

和第四关相比.htaccess被过滤

方法一:php.自动解析为php(windows下)

在windows系统下可行

web.php. windows系统的特性自动过滤掉,成为web.php

而在Linux下环境

方法二:.user.ini绕过

.user.ini绕过

上传.user.ini

再上传web.jpg

但是当前是docker拉取的环境 失败

Pass-06:大小写绕过

分析代码:

相比前几个关少了  $file_ext = strtolower($file_ext); //转换为小写

所以大小写就可以绕过

Pass-07:空格绕过

代码分析:

少了$file_ext = trim($file_ext); //首尾去空

可以空格绕过

Pass-08:尾部点绕过

代码分析:

没有$file_name = deldot($file_name);//删除文件名末尾的点

可以用点绕过

Pass-09:::$DATA特殊符号绕过

代码分析:

没有$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA

可以用::$DATA特殊符号绕过

Pass-10:利用  '. .'绕过 

尾部去点去空格

依旧可以用web.php. .来绕过

Pass-11:双写绕过

代码分析:

依旧是黑名单但是 代码:$file_name = str_ireplace($deny_ext,"", $file_name);

从文件名 $file_name 中删除所有在 $deny_ext 列表中定义的被禁止的扩展名,替换为空

所以可以双写绕过

Pass-12:get %00截断

换成了白名单

$file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);

下面的$file_ext匹配上传文件名中的.最后一次出现位置+1后面的所有字符串

$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

使用get传参 重置上传路径

所以可以使用%00截断的方法

web.php%00+xxxxxx.jpg绕过白名单

当执行move_uploaded_file函数时,服务器会对路径中%00后的内容不做解析,默认迁移文件为web.php

Pass-13:post %00截断

和12关区别就是13关换为了post传参

Pass-14:照片马(二进制过滤文件类型)

代码分析:

getReailFileType()用于检测文件头部两个字节的信息(前两个字节是文件格式的标识),并且通过二进制码判断其文件的类型,然后控制文件的上传

直接上传web.php的web.jpg文件上传是失败的

对比正常的照片和web.jpg的文件 头部有明显不同,恰巧代码就是通过头字段来判断的

所以这里使用png照片和web.php代码结合

Pass-15:照片马(返回数组过滤文件类型)

这里用上一题的照片码上传失败显示文件未知,上传失败!

按理说可以用上一题的照片马,

会不会是照片大小的问题

重新截取小照片整合php

GIF89a ?    !?
   ,      D ;
<?php
    phpinfo();
?>

后面发现上传成功

Pass-16:照片马(第一字节过滤文件类型)

代码分析:

通过exif_imagetype($filename);函数取一个图像的第一个字节并检查其签名。

仍可以用上一关的图片马,

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

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

相关文章

blender学习25.3.8

【04-进阶篇】Blender材质及灯光Cycle渲染&后期_哔哩哔哩_bilibili 注意的问题 这一节有一个大重点就是你得打开显卡的渲染&#xff0c;否则cpu直接跑满然后渲染的还十分慢 在这里你要打开GPU计算&#xff0c;但是这还不够 左上角编辑&#xff0c;偏好设置&#xff0c;系…

什么是美颜SDK?从几何变换到深度学习驱动的美颜算法详解

美颜SDK是一种用于处理图像与视频的开发工具&#xff0c;能够提供磨皮、美白、瘦脸、五官优化、动态贴纸等美颜特效。它广泛应用于直播、短视频、社交、在线会议、电商等行业&#xff0c;帮助用户在视频或图片中实现更好的视觉呈现。 一、从几何变换到深度学习&#xff1a;美颜…

【江协科技STM32】ADC数模转换器-学习笔记

ADC简介 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁&#xff0c;ADC是一种将连续的模拟信号转换为离散的数字信号的设备或模块12位逐次逼近型…

Docker 安装 Nacos 2.1.1(单机版)

一、拉取镜像 docker pull nacos/nacos-server:v2.1.1 二、新建数据库 官网上下载 对应版本的 nacos zip 包&#xff0c;在 nacos\conf 目录下有 mysql脚本&#xff1a; 新建一个数据库 nacos_config&#xff0c;在数据库中依次执行 nacos-mysql.sql、1.4.0-ipv6_support-up…

【计算机网络入门】初学计算机网络(九)

目录 1.令牌传递协议 2. 局域网&IEEE802 2.1 局域网基本概念和体系结构 3. 以太网&IEEE802.3 3.1 MAC层标准 3.1.1 以太网V2标准 ​编辑 3.2 单播广播 3.3 冲突域广播域 4. 虚拟局域网VLAN 1.令牌传递协议 先回顾一下令牌环网技术&#xff0c;多个主机形成…

国产化替换案例:CACTER邮件网关为Groupwise系统加固邮件安全防线

电子邮件作为企业信息流转的命脉&#xff0c;承载着商业机密与客户数据。然而&#xff0c;网络攻击手段日益复杂&#xff0c;钓鱼邮件等威胁正快速侵蚀企业安全防线。据《2024年第四季度企业邮箱安全性研究报告》显示&#xff0c;2024年Q4企业邮箱用户遭遇的钓鱼邮件数量激增至…

在Linux中开发OpenGL——检查开发环境对OpenGL ES的支持

由于移动端GPU规模有限&#xff0c;厂商并没有实现完整的OpenGL特性&#xff0c;而是实现了它的子集——OpenGL ES。因此如果需要开发的程序要支持移动端平台&#xff0c;最好使用OpenGL ES开发。 1、 下载支持库、OpenGL ES Demo 1.1、下载PowerVRSDK支持库作为准备&#xff…

【GoTeams】-5:引入Docker

本文目录 1. Dokcer-compose回顾下Docker知识编写docker-compose.yaml运行docker 2. 部署go服务编写dockerfile 1. Dokcer-compose 这里简单先用一下win版本的Docker&#xff0c;后期开发好了部署的时候再移植到服务器下进行docker部署。 输入命令docker-compose version 就可…

YOLOv8改进SPFF-LSKA大核可分离核注意力机制

YOLOv8改进------------SPFF-LSKA 1、LSAK.py代码2、添加YAML文件yolov8_SPPF_LSKA.yaml3、添加SPPF_LSKA代码4、ultralytics/nn/modules/__init__.py注册模块5、ultralytics/nn/tasks.py注册模块6、导入yaml文件训练 1、LSAK.py代码 论文 代码 LSKA.py添加到ultralytics/nn/…

10.RabbitMQ集群

十、集群与高可用 RabbitMQ 的集群分两种模式,一种是默认集群模式,一种是镜像集群模式&#xff1b; 在RabbitMQ集群中所有的节点(一个节点就是一个RabbitMQ的broker服务器) 被归为两类:一类是磁盘节点,一类是内存节点&#xff1b; 磁盘节点会把集群的所有信息(比如交换机、绑…

DeepSeek-R1:使用KTransformers实现高效部署指南

KTransformers作为一个开源框架&#xff0c;专门为优化大规模语言模型的推理过程而设计。它支持GPU/CPU异构计算&#xff0c;并针对MoE架构的稀疏性进行了特别优化&#xff0c;可以有效降低硬件要求&#xff0c;允许用户在有限的资源下运行像DeepSeek-R1这样庞大的模型。 硬件…

回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测

回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测 目录 回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测回归效果基本介绍GWO-BP-Adaboost:基于灰狼算法优化BP神经网络结合Adaboost思想…

基于websocket的多用户网页五子棋 --- 测试报告

目录 功能测试自动化测试性能测试 功能测试 1.登录注册页面 2.游戏大厅页面 3.游戏房间页面 自动化测试 1.使用脑图编写web自动化测试用例 2.创建自动化项目&#xff0c;根据用例通过selenium来实现脚本 根据脑图进行测试用例的编写&#xff1a; 每个页面一个测试类&am…

JavaWeb-mysql8版本安装

下载方式 地址&#xff1a;https://www.mysql.com/cn/downloads/ 选择&#xff1a;MySQL Community (GPL) downloads 选择&#xff1a;MySQL Community Server 选择&#xff1a; 选择&#xff1a; 安装mysql &#xff08;8.0.30&#xff09; 1、以管理员身份 打开 命令行…

人工智能神经网络基本原理

MP 神经元数学模型 MP 模型是神经网络领域的早期模型&#xff0c;它模仿了神经元的基本结构和工作原理。 人工神经元是一个多输入、单输出的信息处理单元&#xff0c;是对生物神经元的建模。建模方式可以有很多种&#xff0c;不同的建模方式就意味着不同的人工神经元结构。 比…

python从入门到精通(二十六):python文件操作之Word全攻略(基于python-docx)

python文件操作之word技巧大全 word技巧基础到高级操作大全A.准备工作1. 安装python-docx库2. 导入库 B.基础操作1. 创建Word文档1.1 创建文档对象1.2 添加word标题1.3 添加word段落1.4 设置段落样式1.5 创建有序列表1.6 创建无序列表1.7添加word分页1.8 添加word图片1.9 添加w…

Android Configuration相关问题如何定位分析(中英文切换、黑夜白天模式等)

Android Configuration相关问题如何定位分析&#xff08;中英文切换、黑夜白天模式等&#xff09;. Configuration的常见问题场景&#xff1a; app的size position不正确中英文显示不正确白天黑夜模式不正确 Configuration信息如下&#xff1a; mFullConfiguration{1.0 ?mc…

SCI1区TOP:自适应学习粒子群算法SLPSO,深度解析+性能实测

目录 1.摘要2.改进策略3.自适应学习粒子群算法4.结果展示5.参考文献6.获取代码 1.摘要 粒子群算法&#xff08;PSO&#xff09;是一种基于种群的随机搜索方法&#xff0c;广泛应用于科学和工程领域的连续空间优化问题&#xff0c;并已证明其高效性和有效性。许多实际问题的往往…

kotlin协程之CoroutineScope 与 CoroutineContext 详解

前言 在使用协程时&#xff0c;不管是看协程的源码还是日常使用&#xff0c;会经常看到 CoroutineScope 和 CoroutineContext&#xff0c; 这两个到底是什么东西呢&#xff1f;作用是什么&#xff1f; 本篇文章我们就来深入的理解一下 CoroutineScope 和 CoroutineContext。 …

win11编译llama_cpp_python cuda128 RTX30/40/50版本

Geforce 50xx系显卡最低支持cuda128&#xff0c;llama_cpp_python官方源只有cpu版本&#xff0c;没有cuda版本&#xff0c;所以自己基于0.3.5版本源码编译一个RTX 30xx/40xx/50xx版本。 1. 前置条件 1. 访问https://developer.download.nvidia.cn/compute/cuda/12.8.0/local_…