文件上传漏洞(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);函数取一个图像的第一个字节并检查其签名。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++学习之QT综合项目二经典翻金币小游戏及打包

1.项目简介及创建 #include "chooselevelscene.h" #include <QMenuBar> #include <QMenu> #include <QPainter> #include "mypushbutton.h" #include <QTimer> #include <QDebug> #include <QLabel> #include…

前端项目中export和import的作用

之前写过代码&#xff0c;但是那个时候是使用jspdivcss写页面&#xff0c;jquery负责页面数据展示和数据请求。近期在学习前端&#xff0c;发现有export和import&#xff0c;想起了之前没用过&#xff0c;就研究搜索了一下&#xff0c;发现这个是在 ES6中添加的&#xff0c;难怪…

JVM 类加载原理之双亲委派机制(JDK8版本)

对 Java 程序的运行过程而言&#xff0c;类的加载依赖类加载器完成&#xff0c;而在 Java 默认的类加载器又分为启动类加载器、扩展类加载器和应用程序类加载器三种&#xff0c;但是一个类通常仅仅需要被加载一次即可&#xff0c;双亲委派机制即规定各个类该被何种类加载器加载…

【每日学点HarmonyOS Next知识】对话框去掉圆角、数组拼接、自定义对话框依附某个控件、平移动画、页面栈管理

1、 HarmonyOS CustomDialog怎么去掉左右和底部的透明以及圆角&#xff1f; CustomDialog怎么去掉左右和底部的透明以及圆角 设置customStyle为true即可开启使用自定义样式。设置borderRadius为0去掉圆角属性。 属性用法参考文档&#xff1a;https://developer.huawei.com/c…

坐落于杭州的电商代运营公司品融电商

坐落于杭州的电商代运营公司品融电商 在中国电商行业蓬勃发展的浪潮中&#xff0c;品融电商&#xff08;PINKROON&#xff09;作为一家扎根杭州的新锐品牌管理公司&#xff0c;凭借其独特的全域增长方法论和实战经验&#xff0c;迅速崛起为行业标杆。自2020年成立以来&#x…

【python爬虫】酷狗音乐爬取练习

注意&#xff1a;本次爬取的音乐仅有1分钟试听&#xff0c;仅作学习爬虫的原理&#xff0c;完整音乐需要自行下载客户端。 一、 初步分析 登陆酷狗音乐后随机选取一首歌&#xff0c;在请求里发现一段mp3文件&#xff0c;复制网址&#xff0c;确实是我们需要的url。 复制音频的…

Vue3 路由的历史记录 如何不允许浏览器前进后退 在函数中使用路由切换组件 路由的重定向

路由的历史记录模式 第一种push push会保留所有的切换记录&#xff0c;通过操作浏览器的前进后退&#xff0c;可以返回刚才浏览的页面 第二章replace replace不会保留路由的切换记录&#xff0c;不支持浏览器的前进后退 在函数中使用路由切换组件 页面挂载3秒后&#x…

【CSS3】金丹篇

目录 标准流概念元素类型及排列规则块级元素行内元素行内块元素 标准流的特点打破标准流 浮动基本使用清除浮动额外标签法单伪元素法双伪元素法&#xff08;推荐&#xff09;overflow 法 Flex 布局Flex 组成主轴对齐方式侧轴对齐方式修改主轴方向弹性盒子伸缩比弹性盒子换行行对…

解锁DeepSpeek-R1大模型微调:从训练到部署,打造定制化AI会话系统

目录 1. 前言 2.大模型微调概念简述 2.1. 按学习范式分类 2.2. 按参数更新范围分类 2.3. 大模型微调框架简介 3. DeepSpeek R1大模型微调实战 3.1.LLaMA-Factory基础环境安装 3.1大模型下载 3.2. 大模型训练 3.3. 大模型部署 3.4. 微调大模型融合基于SpirngBootVue2…

深入理解string:从模拟实现看本质

文章目录 摘要&#xff1a;一、引言二、string的模拟实现2.1 string类的定义 三、深拷贝和深赋值3.1 深浅拷贝构造函数3.2 深赋值运算符 四、总结五、附录5.1 完整代码6.2 测试用例 六、致谢 摘要&#xff1a; 本文将通过模拟实现一个简单的 String 类&#xff0c;深入探讨字符…

Unity组件TrailRenderer屏幕滑动拖尾

Unity组件TrailRenderer屏幕滑动拖尾 介绍制作总结 介绍 今天要做一个拖动效果&#xff0c;正好用到了TrailRenderer这个组件&#xff0c;正好分享一下 效果参考如下&#xff1a; 制作 1.创建空物体TrailObject添加组件TrailRenderer 下面的材质可以根据自己想要制作的效果去…

laravel中 添加公共/通用 方法/函数

一&#xff0c;现在app 下面创建Common目录&#xff0c;然后在创建Common.php 文件 二&#xff0c;修改composer.json文件 添加这个到autoload 中 "files": ["app/Common/Common.php"]"autoload": {"psr-4": {"App\\": &quo…

C#程序加密与解密Demo程序示例

目录 一、加密程序功能介绍 1、加密用途 2、功能 3、程序说明 4、加密过程 5、授权的注册文件保存方式 二、加密程序使用步骤 1、步骤一 ​编辑2、步骤二 3、步骤三 4、步骤四 三、核心代码说明 1、获取电脑CPU 信息 2、获取硬盘卷标号 3、机器码生成 3、 生成…

批量将 Excel 转换 PDF/Word/CSV以及图片等其它格式

Excel 格式转换是我们工作过程当中非常常见的一个需求&#xff0c;我们通常需要将 Excel 转换为其他各种各样的格式。比如将 Excel 转换为 PDF、比如说将 Excel 转换为 Word、再比如说将 Excel文档转换为图片等等。 这些操作对我们来讲都不难&#xff0c;因为我们通过 Office 都…

【报错】微信小程序预览报错”60001“

1.问题描述 我在微信开发者工具写小程序时&#xff0c;使用http://localhost:8080是可以请求成功的&#xff0c;数据全都可以无报错&#xff0c;但是点击【预览】&#xff0c;用手机扫描二维码浏览时&#xff0c;发现前端图片无返回且报错60001&#xff08;打开开发者模式查看日…

概念|RabbitMQ 消息生命周期 待消费的消息和待应答的消息有什么区别

目录 消息生命周期 一、消息创建与发布阶段 二、消息路由与存储阶段 三、消息存活与过期阶段 四、消息投递与消费阶段 五、消息生命周期终止 关键配置建议 待消费的消息和待应答的消息 一、待消费的消息&#xff08;Unconsumed Messages&#xff09; 二、待应答的消息…

电路原理(电容 集成电路NE555)

电容 1.特性&#xff1a;充放电&#xff0c;隔直流&#xff0c;通交流 2.电容是通过聚集正负电荷来存储电能的 3.电容充放电过程可等效为导通回路 4.多电容并联可以把容量叠加&#xff0c;但是多电容串联就不会&#xff0c;只会叠加电容的耐压值。 6.电容充放电时相当于通路&a…

Manus:成为AI Agent领域的标杆

一、引言 官网&#xff1a;Manus 随着人工智能技术的飞速发展&#xff0c;AI Agent&#xff08;智能体&#xff09;作为人工智能领域的重要分支&#xff0c;正逐渐从概念走向现实&#xff0c;并在各行各业展现出巨大的应用潜力。在众多AI Agent产品中&#xff0c;Manus以其独…

@ComponentScan和@SpringBootApplication的scanBasePackages 同时使用

一、SpringBootApplication(scanBasePackages {"com.xx","com.xxx"}) 从注释里可以看出&#xff0c;SpringBootApplication的scanBasePackages 和ComponentScan 等同。 二、ComponentScan 三、对比 两者作用相同&#xff0c;如果不指定包名&#xff0c;默…

记录排查服务器CPU负载过高

1.top 命令查看cpu占比过高的进程id 这里是 6 2. 查看进程中占用CPU过高的线程 id 这里是9 top -H -p 6 ps -mp 6 -o THREAD,tid,time 使用jstack 工具 产看进程的日志 需要线程id转换成16进制 jstack 6 | grep “0x9” 4.jstack 6 可以看进程的详细日志 查看日志发现是 垃圾回…