文件上传漏洞绕过姿势(二)

前言

一、大小写绕过

二、空格或者“.”绕过

三、 ::$DATA绕过

四、双后缀名绕过

五、白名单绕过 %00

%00截断原理

%00截断GET用法:

%00截断POST用法

总结



一、大小写绕过

根据操作系统的特性,这就不在细讲:

".php"可以替换为“.PHp”等等


二、空格或者“.”绕过

需要用bp去修改数据包,因为系统特性并不会去除所以最后还是所上传脚本的格式

.php.

三、 ::$DATA绕过

必须是Windows系统,必须是php环境,必须是那个源文件

原理:php在windows系统的时候如果文件名+“::$DATA”会把该词之后的数据当成文件流处理不会检测文件后缀名

例如: shell.php --  shell.php::$DATA

四、双后缀名绕过

在进行上传的时候有的情况会将字符串里的php替换为空

一次过滤:shell.php -- shell.phpphp

五、白名单绕过 %00

在某些情况下直接在文件名处截断是没用的,因为%00会被解析,只有在数据包中含有文件上传目录时才能利用

%00截断原理

www.xxx.com/shell.jpg

www.xxx.com/shell.php%00.jpg => www.xxx.com/shell.php

%00截断GET用法:

%00截断:php5.3版本以下GET提交不需要解码,直接在get文件目录处截断

%00截断POST用法

当是POST接收情况的时候,正确的用法应该是我们需要对 %00 做一个URL解码

为什么两者用法不同

这是因为 %00 截断在 GET 中被 url 解码之后是空字符。但是在 POST 中 %00 不会被 url 解码,所以只能通过 burpsuite 修改 hex 值为 00 进行截断


总结




猜你喜欢

转载自blog.csdn.net/qq_45501227/article/details/121689164