文件上传漏洞-黑名单检测

news2024/11/27 14:52:19

黑名单检测

一般情况下,代码文件里会有一个数组或者列表,该数组或者列表里会包含一些非法的字符或者字符串,当数据包中含有符合该列表的字符串时,即认定该数据包是非法的。
如下图,定义了一个数组$deny_ext = array('.asp','.aspx','.php','.jsp');
然后有一个判断语句如果后罪名为数组里面的几个就不允许上传

如何确认是否是黑名单检测

黑名单是有限的,可以随意构造一个文件后缀,如果可以上传,则说明是黑名单检测,反之,为白名单检测。比如上传一个php后缀的文件,发现不允许上传,接下来就是去判断检测方式。
随意构造一个文件后缀,比如将1.php改为1.aaa发现可以上传,说明是基于黑名单检测

绕过技巧

1. 后缀双写绕过
2. 后缀大小写绕过
3. 其它可解析后缀绕过
4. 图片+配置文件绕过
。。。

其它可解析后缀绕过

PHP:
php2php3php5phtmlpht(是否解析需要根据配置文件中设置类型来决定)
ASP:asacercdx
ASPX:ascxashxasac
JSP:jspxjspf

Pass-03

方法1
更改 Apache 的配置项 AddType application/x-httpd-php .php .phtml ,然后上传 .phtml 文件
在实战中是不可以修改的,如果服务器本身就设置了这项那么我们可以利用。这里只是了解一下原理。
一般会将这一项注释掉,我们打开后,可以添加指定后缀,这样服务器就会将指定后缀的文件当做php文件解析
更改后将phpstudy服务重启即可,我们将post.php后缀修改为phtml发现上传成功。接下来就可以利用工具进入服务器
方法2
抓包,双写 ::$DATA
window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,它的目的就是不检查后缀名
例如:"phpinfo.php::$DATA" Windows会自动去掉末尾的::$DATA变成"phpinfo.php
我们查看源代码可以发现这么一个变量
网站有所防御,会清除::$DATA,防止我们利用::$DATA绕过监测后缀名。
服务器是从第一个字符开始匹配::$DATA,比如第一个从:开始,只有后面完全匹配::$DATA,才会清除,那么我们就可以利用双写::$DATA。那么到底如何双写呢。
1.::$DATA::$DATA,这种写法明显不对,因为第一次开始匹配,发现一个::$DATA清除后,还会继续匹配发现还是::$DATA那么就都会清除掉。
2.::$::$DATADATA,开始匹配,匹配到::$以后下一个应该是字母D但是下一个是:则会认为不是,那么就开始从第二个:同理,知道匹配到中间的::$DATA,会将这个清除掉,然后会接着从下一位开始匹配也就是D开始第一个就匹配失败,那么继续往后,后面都不是从:开始。所以最后就留一下了一个::$DATA。这样就达成了我们的目的
开始抓包
在这里双写,然后放包会发现.php文件上传成功
访问图像链接,将::$data去掉再次访问
可以看到一句话木马上传成功

图片+配置文件绕过

Pass-04

.htaccess 文件(或者分布式配置文件,全称是HypertextAccess(超文本入口)。提供了针对目录改变配置的方法。它里面可以存放Apache服务器配置相关的指令。
.htaccess
<FilesMatch "as.png">
setHandler application/x-httpd-php
</FilesMatch>
通过一个.htaccess 文件调用 php 的解析器去解析一个文件名中只要包含"as.png"这个字符串的任意文件,所以无论文件名是什么样子,只要包含"as.png"这个字符串,都可以被以 php 的方式来解析,一个自定的.htaccess 文件就可以以各种各样的方式去绕过很多上传验证机制。
也可以使用以下方式:
先上传 .htaccess 文件,内容如下
SetHandler application/x-httpd-php(这个万能)
或者
AddType application/x-httpd-php jpg
再上传一句话木马 shell.txt 或者 shell.jpg 文件
解题过程
可以看到这关的源代码添加了更多的黑名单。我们再想通过其他后缀解析php文件就比较困难,那么就用到了.htaccess 文件,先编辑好上传
之所以可以使用 .htacces文件是因为这关源代码中不会随机更改文件名
而第三关会将上传厚的文件随机更改名字这样就会让 .htacces文件失效
上传好 .htaccess 文件后再上传一个.png的文件,直接将一句话木马文件后缀改成这个。 .htaccess 文件的作用是将任何文件当成php文件进行解析
发现上传成功,使用中国蚁剑进行连接也成功了

点和空格绕过

pass-4

由于删除点和首尾去空这些验证只是一次性,所以我们可以进行 点和空格绕过
bp抓包绕过 这里我们上传post.php文件,然后bp抓包修改为1.php. .这里是点+空格+点。然后放包
可以看到删除点和去空后还剩下一个点,且文件成功被解析

pass-5

查看源代码发现将.htaccess文件也列入黑名单
那么利用点和空格绕过

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1556720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑文件msvcp120.dll丢失的解决方法详细分析,找多种靠谱方法修复

遇到msvcp120.dll文件丢失的问题实际上不算罕见&#xff0c;这往往是由于我们频繁使用电脑而导致的意外删除&#xff0c;或者是电脑受到病毒感染。当这类情况发生时&#xff0c;msvcp120.dll文件可能会被错误地移除或损坏&#xff0c;这便需要我们去进行修复。接下来&#xff0…

3D汽车模型线上三维互动展示提供视觉盛宴

VR全景虚拟看车软件正在引领汽车展览行业迈向一个全新的时代&#xff0c;它不仅颠覆了传统展览的局限&#xff0c;还为参展者提供了前所未有的高效、便捷和互动体验。借助于尖端的vr虚拟现实技术、逼真的web3d开发、先进的云计算能力以及强大的大数据处理&#xff0c;这一在线展…

【正点原子Linux连载】第二十三章 Linux PWM驱动实验 摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1&#xff09;实验平台&#xff1a;正点原子ATK-DLRK3568开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第二十…

Rust 02.控制、引用、切片Slice、智能指针

1.控制流 //rust通过所有权机制来管理内存&#xff0c;编译器在编译就会根据所有权规则对内存的使用进行 //堆和栈 //编译的时候数据的类型大小是固定的&#xff0c;就是分配在栈上的 //编译的时候数据类型大小不固定&#xff0c;就是分配堆上的 fn main() {let x: i32 1;{le…

AOP的实现方式一(Spring学习笔记十)

1、什么是AOP 全称是 Aspect Oriented Programming 即&#xff1a;面向切面编程。是OOP&#xff08;面向对象编程&#xff09;的延续&#xff0c;也是Spring框架中的一个重要内容&#xff0c;是函数式编程的一种衍生泛型。简单的说他就是把我们程序重复的代码抽取出来&#xf…

【网站项目】泉文化管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

面试题:JVM的垃圾回收

一、GC概念 为了让程序员更专注于代码的实现&#xff0c;而不用过多的考虑内存释放的问题&#xff0c;所以&#xff0c;在Java语言中&#xff0c;有了自动的垃圾回收机制&#xff0c;也就是我们熟悉的GC(Garbage Collection)。 有了垃圾回收机制后&#xff0c;程序员只需要关…

java调用c++,使用clion进行JNI开发,ddl包生成以及so包生成

java调用c&#xff0c;使用clion进行JNI开发&#xff0c;ddl包生成以及so包生成 java基础代码生成C头部文件使用clion写C实现代码cmke打包构建使用java调用C执行linux环境下产生CPP的so包 java基础代码 先写好对应的基础代码&#xff0c;先不管static加载的ddl文件&#xff0c…

【JavaScript】数组 ③ ( JavaScript 数组长度 | 修改数组长度 | 数组案例 )

文章目录 一、JavaScript 数组长度1、数组长度2、修改数组长度 二、数组案例1、求数组元素平均值2、求数组元素最大值 一、JavaScript 数组长度 1、数组长度 在 JavaScript 中 , 数组长度 可以通过 数组变量的 length 属性 获取 , 该属性 返回 数组中的元素数量 , 也就是 数组长…

软件速成书:一夜成神的传说,还是现实的泡影?

嗨&#xff0c;各位小伙伴&#xff01; &#x1f431;‍&#x1f4bb; 我是【行走的程序喵】&#xff01;一个兼具Web前端和Java后端技能的技术宅&#xff01; &#x1f31f; 我的博客上分享最新的Web前端和Java后端技术文章&#xff0c;从基础入门到进阶应用&#xff0c;应有…

Linux系统----------探索mysql数据库MHA高可用

目录 一、MHA概述 1.1 什么是 MHA 1.2MHA 的组成 1.2.1MHA Node&#xff08;数据节点&#xff09; 1.2.2MHA Manager&#xff08;管理节点&#xff09; 1.3MHA 的特点 1.4MHA工作原理 1.5数据同步的方式 1.5.1同步复制 1.5.2异步复制 1.5.3半同步复制 二、搭建 MySQ…

夜神模拟器录制脚本录制键盘操作方法

很多用户们在使用夜神模拟器的时候&#xff0c;有个操作助手的功能非常的好用&#xff0c;用户们在录制自己的操作以后&#xff0c;就能够进行全自动的操作等&#xff0c;使用起来还是非常方便的&#xff0c;想要知道的用户们快来查看详细的教程吧~ 夜神模拟器录制脚本怎样录制…

5-规范设计(下):commit信息风格迥异、难以阅读,如何规范?

我们在做代码开发时&#xff0c;经常需要提交代码&#xff0c;提交代码时需要填写 Commit Message&#xff08;提交说明&#xff09;&#xff0c;否则就不允许提交。 所以在 Go 项目开发时&#xff0c;一个好的 Commit Message 至关重要&#xff1a; 可以使自己或者其他开发人…

3.26学习总结java初步实现学生管理系统

(该项目通过视频讲解过程中完成,其中将一些操作进行了修改和完善,其目的是为了巩固前面学习java的一些用法,熟悉写项目的过程) 一.项目要求 学生类: 属性:id、姓名、年龄、家庭住址 添加功能: 键盘录入每一个学生信息并添加&#xff0c;需要满足以下要求: ID唯一 删除功能…

Qt源码调试步骤记录

1.源码&#xff1a; 两种方式&#xff0c;要么安装qt时选择source&#xff0c;要么从官网下载源码&#xff0c;然后在qt creator中设置路径。二选一即可。我选的第二种。 1.1.第一种&#xff0c;安装时选择source&#xff1a; 1.2.第二种&#xff0c;下载源码设置路径&#x…

Linux中安装JDK17.X

1、总体概述&#xff1f; 该操作方式适合centos或red hat环境 2.1、在线下载JDK安装包&#xff1f; 通过wget命令下载JDK17.X包 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 如果提示&#xff1a;没有wget命令就安装wget yum install w…

Qt 富文本处理 (字体颜色大小加粗等)

Qt中支持HTML的控件有textEdit 、label 、textBrowser 。 接口&#xff1a;setHtml("Qt"); toHtml(). 文本样式设置 : 可分字设置 &#xff0c;主要使用QTextCharFormat类进行文本样式设置。 示例&#xff1a; QTextCharFormat fmt; //粗体 fmt.setFontWeight…

wps没保存关闭了恢复数据教程

有时候我们因为电脑问题会忘记保存就关闭wps导致数据丢失&#xff0c;不知道wps没保存关闭了怎么恢复数据&#xff0c;其实数据是无法恢复的。 wps没保存关闭了怎么恢复数据 1、wps没有数据恢复功能&#xff0c;不过可以开启自动备份。 2、我们可以先点击wps左上角的“文件”…

Vtk裁剪功能之平面裁剪vtkClipClosedSurface(vtk小记)

1.原理分析 对你的三维图形&#xff0c;使用一个平面切下去&#xff0c;然后保留一半。 确定一个平面&#xff1a;使用法向量和一个三维坐标点可以确定一个平面 原始图像 切一刀 切两刀&#xff0c;又一半 切三刀&#xff0c;又一半 源代码 #include <vtkActor.h> #i…

Linux 学习之路 -- 工具篇 -- gcc / g++

在 Linux 系统中&#xff0c;gcc 和 g 是两个常用的编译工具&#xff0c;分别用于编译 C 和 C 代码。下面我将介绍gcc、g的一些基本用法 目录 一、简单的认识 二、简单了解一下编译的过程 <1> 预处理阶段 <2>编译 <3>汇编 <4>链接…