三、pikachu之文件上传

news2024/12/27 13:45:52

文章目录

  • 1、文件上传概述
  • 2、客户端检测
    • 2.1 客户端检测原理及绕过方法
    • 2.2 实际操作之client check
  • 3、服务端检测
    • 3.1 MIME type
      • 3.3.1 检测原理
      • 3.3.2 绕过方法
      • 3.3.3 实际操作之MIME type
    • 3.2 文件内容检测
      • 3.2.1 检测原理
      • 3.2.2 绕过方式
      • 3.2.3 实际操作之getimagesize()
    • 3.3 其他服务端检测

1、文件上传概述

  上传文件时,如果未对上传的文件进行严格的验证和过滤,就容易造成文件上传漏洞,上传脚本文件(包括asp、aspx、php、jsp等)。恶意上传行为可能导致网站甚至整个服务器被控制。恶意的脚本文件又被称为WebShell,WebShell具有强大的功能,如查看服务器目录、服务器中文件、执行系统命令等。

2、客户端检测

2.1 客户端检测原理及绕过方法

  客户端(Client):或称为用户端(前端),与服务器相对应。由于客户端对于文件上传漏洞的防御是通过JS代码实现的,所以客户端检测与绕过也称为JS检测与绕过。

  由于后端PHP代码没有对文件做任何检测,所以只要绕过前端JS的校验就可以上传WebShell。

  • 删除浏览器事件;
  • 利用BurpSuite抓包修改文件后缀名;
  • 构造上传表单。

2.2 实际操作之client check

(1)如何判断存在JS检测?

  分别上传图片文件和非图片文件,通过抓包,如果流经Burp的数据包不同(有or没有),则说明存在JS检测。

  • 上传正常图片文件:
    在这里插入图片描述
  • 上传非图片文件:
    在这里插入图片描述

  刚选择非图片文件,就弹出警告框,说明存在JS检测。

(2)绕过JS检测

1)第一种方法:删除浏览器事件。

在这里插入图片描述
在这里插入图片描述

可以看到,成功绕过JS检测。但是,需要注意的是,在谷歌浏览器上使用该方法可能会失效。

2)第二种方法:禁用JS
在这里插入图片描述
在这里插入图片描述
3)第三种方法:bp抓包,修改文件名。
在这里插入图片描述
在这里插入图片描述

3、服务端检测

3.1 MIME type

  MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。常见的MIME 类型如下:

文件拓展名Mime-Type
.jsapplication/x-javascript
.htmltest/html
.jpgimage/jpeg
.pngimage/png
.pdfapplication/pdf

3.3.1 检测原理

  判断$_FILES["file"]["type"]是不是图片格式(image/gif、image/jpeg、image/png),不是则不允许上传。在HTTP 协议中,使用Content-Type字段表示文件的MIME 类型。$_FILES["file"]["type"]的值是从请求数据包中Content-Type中获取。
在这里插入图片描述

3.3.2 绕过方法

  通过抓取数据请求包,上传php文件时,Content-Type值是application/octer-stream,上传jpg格式的文件时Content-Type值是image/jpeg。可修改文件类型进行绕过。

3.3.3 实际操作之MIME type

在这里插入图片描述
在这里插入图片描述

3.2 文件内容检测

3.2.1 检测原理

  利用getimagesize()函数获取图片的宽高等信息,如果上传的不是图片,那么则获取不到信息。

在这里插入图片描述
  服务端主要检测文件幻数:

类型文件幻数
JPGFF D8 FF E0 00 10 4A 46 49 46
GIF47 49 46 38 39 61 (GIF89a)
PNG89 50 4E 47

3.2.2 绕过方式

  在脚本文件开头补充图片对应的头部值,或在图片后写入脚本代码
在这里插入图片描述

3.2.3 实际操作之getimagesize()

  在linux中使用cat test.png 1.php >> test1.jpg 制作图片马。
在这里插入图片描述
在这里插入图片描述

3.3 其他服务端检测

  • 后缀名检测域绕过
  • 00截断检测与绕过
  • 条件竞争检测与绕过

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

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

相关文章

前端学习记录~2023.8.10~JavaScript重难点实例精讲~第6章 Ajax

第 6 章 Ajax 前言6.1 Ajax的基本原理及执行过程6.1.1 XMLHttpRequest对象(1)XMLHttpRequest对象的函数(2)XMLHttpRequest对象的属性 6.1.2 XMLHttpRequest对象生命周期(1)创建XMLHttpRequest对象&#xff…

[C++入门]---vector深度剖析及模拟实现

文章目录 1. vector功能函数模拟实现vector成员变量定义vecor构造函数vector迭代器vector的size函数vector的capacity函数vector的operator[]函数vector的reserve函数vector的resize函数vector的insert函数vector的erase函数vector的push_back函数vector的pop_back函数vector的…

三维重建_体素重建_空间雕刻法/体素着色法

目录 1. 三角化和体素重建的区别 2. 空间雕刻法 空间雕刻法的一致性定义 空间雕刻法具体实现 基于八叉树的空间雕刻法具体实现​编辑 空间雕刻法效果展示 3. 体素着色法 体素着色法的缺点:不唯一性​编辑 体素着色法不唯一性解决措施​编辑 体素着色发实验环境与…

edge浏览器使用jupyter notebook删除快捷键没有用?

按快捷键删除没有用,出现一个黑色方框,里面的数字不断在加 解决方法: 在扩展中将Global Speed控制视频速度的插件关掉,或者将控制速度的快捷键改一下 可以在浏览器设置 》扩展 》管理扩展 里面关掉该插件 可以在Global Speed 的…

安达发APS|三分钟了解智能制造!

智能是由“智慧”和“能力”两个词语构成。从感觉到记忆到思维这一过程,称为“智慧”,智慧的结果产生了行为和语言,将行为和语言的表达过程称为“能力”,两者合称为“智能”。 因此,将感觉、记忆、回忆、思维、语言、…

1631. 最小体力消耗路径

你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row, col) 的高度。一开始你在最左上角的格子 (0, 0) ,且你希望去最右下角的格子 (rows-1, columns-1) (注意下标从 0 开始编号&…

Python+TinyPNG熊猫网站自动化的压缩图片

前言 本篇在讲什么 PythonTinyPNG自动化处理图片 本篇需要什么 对Python语法有简单认知 依赖Python2.7环境 依赖TinyPNG工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉…

VMware Workstation Pro 无法使用开机状态下拍的快照来克隆虚拟机,怎么解决?

环境: VMware Workstation Pro16.0 Win10 专业版 问题描述: VMware Workstation Pro有台虚拟机在开机状态下拍了个6.7快照这个win10初始版,现在想在这个快照下直接克隆,无法使用开机状态下拍的快照创建克隆 解决方案: 1.关闭当前虚拟机 2.到虚拟机文件夹复制一份Wind…

web---Vue2_语法学习

文章目录 1、Vue2 常用指令1.1 初始Vue1.2 Vue的两种模板语法1.3 数据绑定1.4 el和data的两种写法1.5 MVVM模型1.6 Vue中的数据代理1.7 事件处理--事件的基本使用1.7 事件处理--事件修饰符1.7 事件处理--键盘事件1.8 计算属性1.9 监视属性1.9 深度监视2.0 绑定css样式2.1 条件渲…

如果将PC电脑变成web服务器:使用python3监测公网IP实现DDNS

如果将PC电脑变成web服务器:使用python3监测公网IP实现DDNS 上一篇文章中,我们使用Nignx的反向代理和端口转发实现域名访问家里主机上的web了。 由于家庭宽带基本都是动态IP,每当你重启一次光猫,IP地址就会变化一次。当光猫因为…

网络知识点之-堆叠与集群(2-集群)

本文章收录至《网络》专栏,点击右上角专栏图标可访问本专栏! 集群是一种用于集团调度指挥通信的​​​​​​移动通信系统,主要应用在专业移动通信领域。该系统具有的可用信道可为系统的全体用户共用,具有自动选择信道功能&#x…

5G NR:PRACH频域资源

PRACH在频域位置由IE RACH-ConfigGeneric中参数msg1-FrequencyStart和msg1-FDM所指示,其中, msg1-FrequencyStart确定PRACH occasion 0的RB其实位置相对于上行公共BWP的频域其实位置(即BWP 0)的偏移,即确定PRACH的频域起始位置msg1-FDM的取值…

UNIX网络编程卷一 学习笔记 第二十八章 原始套接字

原始套接字提供普通的TCP和UDP套接字不具备的以下3个能力: 1.有了原始套接字,进程可以读写ICMPv4、IGMPv4、ICMPv6等分组。例如,ping程序就使用原始套接字发送ICMP回射请求并接收ICMP回射应答。多播路由守护程序mrouted也使用原始套接字发送和…

Linux服务——http协议及nginx服务

目录 一、HTTP协议 1、跨网络的主机间通讯方式 套接字相关的系统调用 2、HTTP协议访问网站的过程 3、http协议状态码分类 常见的http协议状态码 4、MIME 5、URL组成 6、HTTP协议版本 7、系统处理http请求的工作模式 8、apache与nginx的区别 二、I/O模型 I/O模型相关…

春秋云镜 CVE-2019-16113

春秋云镜 CVE-2019-16113 Bludit目录穿越漏洞 靶标介绍 在Bludit<3.9.2的版本中&#xff0c;攻击者可以通过定制uuid值将文件上传到指定的路径&#xff0c;然后通过bl-kernel/ajax/upload-images.php远程执行任意代码。 启动场景 漏洞利用 exp https://github.com/Kenun…

Matlab绘制灰度图像

灰度图介绍 灰度图像是指每个像素的信息由一个量化的灰度级来描述的图像。如果每个像素的灰度值用一个字节表示&#xff0c;灰度值级数就等于256级&#xff0c;每个像素可以是0-255之间的任何一个数。其特点是&#xff1a;它只有亮度信息&#xff0c;没有颜色信息。占据存储空…

Java IO流(四)Netty理论[模型|核心组件]

概述 Netty是由JBOSS提供的一个Java开源框架,可从Github获取独立项目Netty是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端(摘录官网)Netty所谓的异步是针对用户使用Channel进行IO操作,会立即返回ChannelFuture。但IO操作的任务是提…

AutoSAR配置与实践(基础篇)3.5 BSW 的模式管理

传送门 -> AUTOSAR配置与实践总目录 AutoSAR配置与实践(基础篇)3.5 BSW 的模式管理 一、模式管理的组成二、模式项内容简介一、模式管理的组成 AUTOSAR为ECU的运行时软件的状态处理提供了模式管理组件,如下 • BswM模式管理器 • NM网络管理 • EcuM状态管理器 • ComM通…

Kaggle分类问题Titanic——Machine Learning from Disaster

目录 前言1 题目介绍2 数据清洗3 数据可视化分析4 模型训练5 源码 前言 这是我在大三选修课的课程设计&#xff0c;内容参考了Kaggle上高赞的代码&#xff0c;有详细批注&#xff0c;整体比较基础&#xff0c;结构相对完整&#xff0c;便于初学者学习。这个是一个分类问题&am…

vue 简单实验 v-if 条件判定

1.代码 <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <div id"conditional-rendering"><span v-if"seen">现在你看到我了</span> </div> <script> const C…