文件上传的几种绕过方式基于upload-lbs

2024-02-25 11:38

本文主要是介绍文件上传的几种绕过方式基于upload-lbs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.打开upload-labs网站

本关要求上传图片,为验证文件上传漏洞,提前在本地编辑好php文件,

成功上传后访问此文件可以看到phpinfo界面

尝试上传1.php

弹出 报错,在上传框处右键点击 “检查”

发现框中语句,有一个cheakfile()的函数 删除这个语句在尝试上传

 

没有报错 

在url中访问上传的文件 

成功!

关卡2

同样的步骤

删除cheakfile后尝试上传发现失败 

利用bp抓包分析

        这是抓到的包

发现存在MIME类型绕过 

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

 

这里修改成jpg的对应格式

 

 点击send

没有报错

尝试访问 

成功!

关卡3

尝试上述的两种方法发现不可以

检查一下源代码

发现是一个黑名单过滤 后台会过滤.php结尾文件 并且在前面也对绕过方法进行了屏蔽

此时可以尝试 使用  .php5  .phtml .pht等来绕过并不完整的黑名单

上传成功 

 右键检查可以看到 上传的文件名被修改了

访问这个路径即可

关卡4

直接检查源码

可以说吧后缀名全部给禁用了

这时候上传一个 .htacess文件

这个文件的作用是匹配文件名中的关键字(比如:当文件名[info.php.png]中包含关键字[.php],并且.htaccess文件内容如下,info.php.png 中的代码会被执行)

 上传 .htaccess文件成功

我们再上传php文件 注意 .php后缀还是会被过滤。

 

上传成功 访问测试

 

注意 url中显示文件名 1.php.jpg 但结果仍按照.php文件执行 这就是上传.htaccess文件的作用

关卡5

查看源码

此处没有过滤大小写

 尝试 1.PHp 

上传成功 访问测试 发现不行

回到upload页面 F12检查

发现上传的 1.php被重新命名了

访问新的名称 

 成功!

关卡6

此处没有进行后缀名首尾去空格

上传一个 1.php 文件

同时bp抓包

 修改文件名 .php后加空格 如图

 

响应包中含有被重命名后的 1.php 访问 

成功

关卡7

查看源码

没有过滤后缀名后的 .点

和上一关一样 bp抓包 加点 查看回包 访问

成功

关卡8

查看源码

没有过滤 ::$DATA

 一些特殊的文件命名方式在 Windows下是不被允许的,利用 Burp Suite 工具抓包修改后缀名,绕过服务端的验证后上传文件,Windows会自动去掉后面添加的。

注:此方法只适应于Windows,因为 Unix/Linux系统没有这个特性。

bp抓包

 修改 1.php名 1.php::$DATA 这样windows会自动过滤php后面的不被允许的后缀,就可以执行php文件

访问测试 

 成功!

 

 

这篇关于文件上传的几种绕过方式基于upload-lbs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745356

相关文章

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

MYSQL行列转置方式

《MYSQL行列转置方式》本文介绍了如何使用MySQL和Navicat进行列转行操作,首先,创建了一个名为`grade`的表,并插入多条数据,然后,通过修改查询SQL语句,使用`CASE`和`IF`函... 目录mysql行列转置开始列转行之前的准备下面开始步入正题总结MYSQL行列转置环境准备:mysq

Linux(Centos7)安装Mysql/Redis/MinIO方式

《Linux(Centos7)安装Mysql/Redis/MinIO方式》文章总结:介绍了如何安装MySQL和Redis,以及如何配置它们为开机自启,还详细讲解了如何安装MinIO,包括配置Syste... 目录安装mysql安装Redis安装MinIO总结安装Mysql安装Redis搜索Red