三、pikachu之文件上传

文章目录

  • 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.hqwc.cn/news/88621.html

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

相关文章

MySQL binlog的几种日志录入格式以及区别

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…

L1-044 稳赢(Python实现) 测试点全过

题目 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就…

STM32之17.PWM脉冲宽度调制

一LED0脉冲宽度调制在TIM14_CHI&#xff0c;先将LED&#xff08;PF9&#xff09;代码配置为AF推挽输出模式&#xff0c;将PF9引脚连接到TIM14&#xff0c; #include <stm32f4xx.h>static GPIO_InitTypeDef GPIO_InitStruct;void Led_init(void) {//打开端口F的硬件时钟&a…

Android——基本控件(下)(十九)

1. 菜单&#xff1a;Menu 1.1 知识点 &#xff08;1&#xff09;掌握Android中菜单的使用&#xff1b; &#xff08;2&#xff09;掌握选项菜单&#xff08;OptionsMenu&#xff09;的使用&#xff1b; &#xff08;3&#xff09;掌握上下文菜单&#xff08;ContextMenu&am…

运维Shell脚本小试牛刀(二)

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 一: if---else.....fi 条件判断演示 [rootwww shelldic]# cat checkpass.sh #!/bin/bash - # # # # FILE: checkpass.sh # USAGE: ./checkpass.sh # DESCRI…

简易虚拟培训系统-UI控件的应用3

目录 Button组件的组成 Button组件方法1-在Button组件中设置OnClick()回调 Button组件方法2-在脚本中添加Button类的监听 上一篇使用了文件流读取硬盘数据并显示在Text组件中&#xff0c;本篇增加使用按钮来控制显示哪一篇文字信息。 Button组件的组成 1. 新建Button&#…

智慧能源助力绿色发展

居民生活是碳排放的重要贡献源&#xff0c;作为居民生活的主要场所&#xff0c;社区是低碳城市建设的重要空间载体。推动低碳社区建设&#xff0c;逐渐打造低碳生活方式&#xff0c;是低碳社会建设的重要内容之一。智慧新能源公共设施助力碳中和&#xff0c;用于各社区改造&…

68、使用aws官方的demo和配置aws服务,进行视频流上传播放

基本思想:参考官方视频,进行了配置aws,测试了视频推流,rtsp和mp4格式的视频貌似有问题,待调研和解决 第一步:1) 进入aws的网站,然后进入ioT Core 2)先配置 Thing types & Thing,选择香港的节点,然后AWS ioT--->Manage---> Thing type 然后输入名字,创建Th…

前端工程化

前后端混合开发 前后端分离开发 接口文档&#xff1a;一个业务功能就是一个接口 开发某个功能的流程&#xff1a; 需求分析&#xff0c;接口定义&#xff08;API接口文档&#xff09;&#xff0c;前后端并行开发&#xff08;遵守规范&#xff09;&#xff0c;测试&#xff…

Vue3 Element-plus Upload 上传图片

技术栈&#xff1a;Vue3 Ts Element-plus 官网地址&#xff1a;Upload 上传 | Element Plus 一、背景&#xff1a; 表单上传图片功能 二、效果&#xff1a; 三、流程&#xff1a; ①点击上传图片按钮&#xff0c;系统弹出文件选择对话框&#xff0c;选择图片并确认 ②调…

编绎和优化,脚本代码小米加步枪赶超英法美

编程达人&#xff1a;冰冻牡蛎 测试&#xff0c;总结》》 今有空&#xff0c;继续看了一下竹笋大师几天前提出的“使用for循环查找10亿内可被7整除的数的个数”的题目&#xff08;相关文件&#xff1a;群文件 10亿以内多少个数字可以整除7.7z &#xff09; 1. 论输出的exe大小…

2.3 【MySQL】命令行和配置文件中启动选项的区别

在命令行上指定的绝大部分启动选项都可以放到配置文件中&#xff0c;但是有一些选项是专门为命令行设计的&#xff0c;比方说defaults-extra-file 、 defaults-file 这样的选项本身就是为了指定配置文件路径的&#xff0c;再放在配置文件中使用就没啥意义了。 如果同一个启动选…