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

文件上传漏洞---Pyload

文章目录

  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结

前言

本文重点从靶场案例分析文件上传漏洞常见的Pylod,本文演示靶场upload-labs


一.文件类型---Pyload

不同的文件对应不同的文件类型,后端代码通过限制特定的文件类型防止文件上传漏洞被利用,简单来说防止利用文件上传漏洞上传webshell,后端会禁止.php后缀的文件所代表的文件类型,从而限制.php文件的上传,下面是一些常见文件的文件类型:

.txt - text/plain
.html - text/html
.php - application/octet-stream
.css - text/css
.js - application/javascript 或 text/javascript
.png - image/png
.jpg 或 .jpeg - image/jpeg
.gif - image/gif
.pdf - application/pdf
.doc 或 .docx - application/vnd.openxmlformats-officedocument.wordprocessingml.document 或 
.zip - application/zip
.mp3 - audio/mpeg
.mp4 - video/mp4

演示案例:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {if (file_exists($UPLOAD_ADDR)) {#检查文件类型代码if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR . '/' . $_FILES['upload_file']['name'])) {$img_path = $UPLOAD_ADDR . $_FILES['upload_file']['name'];$is_upload = true;}} else {$msg = '文件类型不正确,请重新上传!';}} else {$msg = $UPLOAD_ADDR.'文件夹不存在,请手工创建!';}
}

 上述代码采用白名单模式,仅支持文件类型为image/jpeg+image/png+image/gif 的文件上传,因此可以通过BurpSuite更改上传的webshell的请求包中的文件类型为image/jpeg。 

二.文件后缀名

通过禁止特定后缀的文件防止webshell上传

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {if (file_exists($UPLOAD_ADDR)) {$deny_ext = array('.asp','.aspx','.php','.jsp');$file_name = trim($_FILES['upload_file']['name']);$file_name = deldot($file_name);//删除文件名末尾的点$file_ext = strrchr($file_name, '.');$file_ext = strtolower($file_ext); //转换为小写$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA$file_ext = trim($file_ext); //收尾去空if(!in_array($file_ext, $deny_ext)) {if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR. '/' . $_FILES['upload_file']['name'])) {$img_path = $UPLOAD_ADDR .'/'. $_FILES['upload_file']['name'];$is_upload = true;}} else {$msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';}} else {$msg = $UPLOAD_ADDR . '文件夹不存在,请手工创建!';}
}

Apache服务器的配置文件中包含如下语句告诉浏览器将哪些后缀的文件解析为.php文件

AddType application/x-httpd-php .php .php3 .phtml

所以可以通过将.php的后缀改为上述后缀如.php3来绕过防御代码。


总结

http://www.lryc.cn/news/387530.html

相关文章:

  • 应用案例 | 如何监测高价值货物在物流运输过程中受到的振动和冲击?全面保障货物安全
  • VMware17安装Ubuntu20版本-保姆级别
  • 初探Xcode工具
  • 小迪安全v2023笔记 1-18
  • RabbitMQ WEB管理端介绍
  • 三阶魔方公式详解及快速解法方法介绍
  • 前端的拖拽和缩放(缩放以鼠标为中心)
  • 【Vue】单向和双向数据绑定
  • HDFS学习
  • Winform使用HttpClient调用WebApi的基本用法
  • python–基础篇–正则表达式–是什么
  • 15 个适用于企业的生成式 AI 用例
  • 若依框架中组件使用教程
  • 秋招力扣刷题——数据流的中位数
  • 51单片机学习——LED功能一系列实现
  • 互联网大厂核心知识总结PDF资料
  • 设计模式-状态模式和策略模式
  • Java NIO Buffer概念
  • Kubernetes在Java应用部署中的最佳实践
  • IOS Swift 从入门到精通:@escaping 和PreferenceKey
  • 基于PHP技术的校园论坛设计的设计与实现-计算机毕业设计源码08586
  • 开机弹窗缺失OpenCL.dll如何解决?分享5种靠谱的解决方法
  • IIS 服务器安装SSL证书
  • 二叉树第二期:堆的实现与应用
  • python-求出 e 的值
  • 模型微调方法
  • cesium使用cesium-navigation-es6插件创建指南针比例尺
  • go sync包(七)Sync.Map
  • Batch文件中的goto命令:控制流程的艺术
  • 【chatgpt】两层gcn提取最后一层节点输出特征,如何自定义简单数据集