文件传输服务器的符号,文件上传漏洞利用介绍

目录

文件上传漏洞利用介绍

1.绕过js验证

2.绕过MIME-TYPE验证

3.绕过基于黑名单验证

基于文件后缀名验证介绍

基于文件后缀名验证方式的分类

基于黑名单验证代码分析

利用apache配置文件.htaccess进行绕过

大小写绕过

空格绕过

点号绕过

特殊符号绕过

路径拼接绕过

双写绕过

4.绕过白名单验证

00截断

5.图片webshell上传绕过

文件上传漏洞利用介绍

1.绕过js验证

js验证代码分析

45bc767da20fa2918339820786c1772c.png

burpsuit剔除js验证

对于js前端验证,直接删除js代码之后就可以绕过js验证

aa8ab5fd5276f71bf78b8d368a32a1a0.png

2.绕过MIME-TYPE验证

验证MEMI-TYPE代码分析

查看源代码分析,使用$_FILE["upload_file"]["type"]获取上传文件的MIME-TYPE类型。其中upload_file是在表单中定义的。

d0554ce98fa45e4acc8d207b8d82dcba.png

burpsuit绕过MIME-TYPE验证

利用burpsuit工具截断http请求,在repeater重放修改MIME-TYPE类型绕过验证。image/jpeg

ebb35ed742eafbcf31eb603c12cafc14.png

3.绕过基于黑名单验证

基于文件后缀名验证介绍

对于文件上传模块来说,尽量避免上传可执行文件。为了防止上传脚本文件需要设置对应的验证方式。最简单的就是设置文件后缀名验证

基于文件后缀名验证方式的分类

1.基于白名单验证:只针对白名单中有的后缀名,文件才能上传成功。

2.基于黑名单验证:只针对黑名单中没有的后缀名,文件才能上传成功。

基于黑名单验证代码分析

对于黑名单中的后缀名筛选。绕过黑名单可以通过寻找“漏网之鱼”,

寻找某些可以被作为脚本执行同时也不在黑名单中。

cf5fbc2bf8510a8e7a0bcdb8c5fa3d1a.png

burpsuite绕过黑名单验证

利用burpsuite工具截断http请求,利用intruder模块进行枚举后缀名,寻找黑名单中没有过滤的后缀名。

利用apache配置文件.htaccess进行绕过

htaccess文件是apache服务器的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件拓展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

SetHandler application/x-httpd-php

设置当前目录下所有文件都使用PHP解析,那么无论上传任何文件,只要文件内容符合PHP语言代码规范,就会当作PHP执行,不符合则会报错。

配置http.conf文件

在apache中如果需要启动.htaccess,必须在http.conf中设置AllowOverride

059b37e46561bc645bc0476d80e0b7af.png

在黑名单中,没有对.htaccess进行过滤,可以直接上传.htaccess来设置使用php解析任意文件。

制作图片phpinfo探针并上传

phpinfo();

?>

保存为1.jpg进行上传即可。

4d3537d62fec7fb198f95c1a1ca8b031.png

大小写绕过

windows系统下,对文件名大小写不敏感,例如:test.php和 TEST.phP是一样的。

linux系统下,对文件名的大小写敏感,例如:test.php和TEST.phP是不一样的。

基于黑名单验证的代码分析

没有利用 strtolower($file_ext)全部转换为小写

可以清晰的看出,黑名单中增加了.htaccess的检验,但是缺少了对上传文件名获取的小写转换

利用burpsuite修改文件名进行绕过

52e950c513a7101f6f0d17dec10fb74b.png

空格绕过

基于黑名单验证的代码分析

没有利用trim($file_ext)去除最后面得空格

windiws系统下,对文件名中空格会被作为空处理,程序中的检验代码却不能自动删除空格。从而绕过黑名单。

针对这样的情况需要使用burpsuite截断http请求后,修改对应的文件名 添加空格。

点号绕过

基于黑名单验证的代码分析

没有利用deldot($file_name)去掉最后面得点

windows系统下,文件后缀名最后一个点会被自动去除

例如 windows下新建一个1.php. 文件,会自动更正为1.php

特殊符号绕过

基于黑名单验证的代码分析

没有利用str_ireplace('::DATA',  ' ' ' ,$file_ext)去除特殊符号。

windwos系统下,如果上传的文件名中test.php::$DATA会在服务器上生成一个test.php的文件,其中内容和所上传的文件内容相同,并且被解析。

利用burpsuite修改文件名进行上传

路径拼接绕过

例如:

新建一个 1.php. .文件,deldot删除最后一个点之后,不能进行删除,trim删除空格,那么最终上传的文件名为1.php. ,利用windows自动去除最后一个点,导致成功上传1.php

双写绕过

基于黑名单验证的代码分析

str_ireplace()函数替换字符串中的一些字符(不区分大小写)

代码编写过程中,只对黑名单中的内容进行空替换,因为只替换一次所以造成双写绕过

例如:1.phphpp

4.绕过白名单验证

00截断

0x00是十六进制表示方法,是ascii为0的字符。在有些函数处理时,会把这个字符当作结束符。

系统对文件名读取时,如果遇到0x00,就会认为读取已结束。

在php5.3之后的版本中完全修复了00截断,并且00截断受限于GPC,addslashes函数。

GET型00截断

GET型提交的内容会被自动进行URL编码

3f1bff6520d4898c0ac49354b16299d2.png

POST型00截断

在POST请求中,%00不会被自动解码,需要在16进制中进行修改00

e810b72e772e5778b6436f0a8c11e1a5.png

5.图片webshell上传绕过

在服务器的PHP代码中,对于用户上传的文件做文件类型检验,检查文件格式是否符合上传规范。可以检查文件二进制格式的前几个字节,从而判断文件类型是否正确。

针对这种情况直接新建1.jpg,其中代码内容如下

GIF98A

phpinfo();

?>

文件包含漏洞代码解析

在PHP中,使用include、require、include_once、require_once函数包含的文件都会被当作PHP代码执行,无论文件的名称是什么,

只要文件内容符合PHP代码规范,都会当作PHP代码执行。

图片webshell需要结合文件包含漏洞一起使用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值