-
Less-1 前端JS绕过
在代码开始出加入下面一行代码,即可设置字符编码为utf-8
header("Content-Type:text/html;charset=utf-8");在PHP中写入会显示正常
eg:<?php
header("Content-Type:text/html;charset=utf-8");
echo("iloveyou")?>即可
源码:
方法一:
上传一个php一句话文件,直接弹出不允许上传,尝试前端绕过。
按F12打开调控台,删除下面这个验证js代码.
然后就会上传成功,返回图片信息即路径地址.
方法二:
先创建一个php文件
<?php
echo("iloveyou")?>
然后修改后缀名为jpg
然后用burp suite修改后缀名为php
然后打开控制台找到这个文件打开成功
-
Less-2 MIME-TYPE验证绕过
源码:
上传一句话图片木马,用burpsuite抓包,将后缀名改为php。
首先新建一个图片文件
常见的图片格式有BMP(位图)、JPG、JPEG、PNG、GIF等
如1.jpg
然后打开burp suite设置Proxy下的使出现Intercept is off
然后打开网站的设置Settings点击Manual proxy configuration
然后上传文件jpg
然后点开burp suite使之出现Intercept is on
然后点击上传
然后抓包成功修改1.jpg文件为1.php然后点击Intercept is on出现off即可成功(如果抓包不成功请查看我的”Burp suite使用方法“即可完成抓包)
然后打开控制台就可以发现后缀名已经改为PHP
-
Less-3 黑名单绕过
源码:
用黑名单不允许上传.asp,.aspx,.php,.jsp后缀的文件
但可以上传.phtml .phps .php5 .pht
前提是apache的httpd.conf中有如下配置代码
AddType application/x-httpd-php .php .phtml .phps .php5 .pht
因此抓包修改为1.php5上传,回复包里有上传路径
-
Less-4 .htaccess绕过
查看源码
黑名单拒绝了几乎所有有问题的后缀名,除了.htaccess
前提条件(1.mod_rewrite模块开启。2.AllowOverride All)
方法一:
先上传一个.htaccess文件,内容如下:SetHandler application/x-httpd-php
然后再上传
info.jpg文件:
然后在控制台打开info.jpg则会出现
方法二:
新建一个php文件
如1.php
<?php
echo("iloveyou")?>
然后用brute suite进行抓包修改php文件后缀名加上点空格点即可成功
如1.php. .
-
Less-5运用后缀添加特殊符号来绕过
首先创建一个php文件
<?php
echo("iloveyou")?>
然后用brute suite抓包然后在后缀名上写上. .如
1.php. .
然后打开控制台打开该文件则显示成功
-
Less-6 大小写绕过
源码:
同样黑名单很多,把.htaccess ,.ini也列入到了黑名单,但是发现小写转化没有了,所以我们可以采用大小写绕过。
上传.php文件,burp抓包修改后缀:
PHP,Php,phP都可以最后显示结果
因为Windows特性,创建文件时忽略大小写,实际保存的文件后缀即为php
-
Less-7 空格绕过
源码:
同上,但是少了尾部去空,所以尝试空格绕过。
首先创建一个php文件
<?php
echo("iloveyou")?>
然后用brute suite抓包然后在后缀名上加上空格
还是Windows特性,创建文件时,忽略结尾的空格,实际保存的文件名为.php
则显示成功
-
Less-8 点绕过
源码
缺少了deldot()函数,不会删除文件末尾的点,所以尝试点绕过。
首先创建一个php文件
<?php
echo("iloveyou")?>
然后用brute suite抓包然后在后缀名上加上点
还是Windows特性,创建文件时,忽略结尾的.,实际保存的文件名为.php
则显示成功
-
Less-9 Windows文件流性绕过
源码
缺少了
DATA','',DATA**
利用了Windows特性,Windows文件流特性绕过。必须是Windows,必须是php,必须是那个源文件php在Windows的时候如果文件名+”::DATA之后的数据当成文件流处理,不会检测后缀名.且保持”::$DATA”之前的文件名。
例如:phpinfo.php::$DATAWindows会自动去掉末尾的
::$DATA变成phpinfo.php。
它的目的就是不检查后缀名。
首先创建一个php文件
<?php
echo("iloveyou")?>
然后用brute suite抓包然后在后缀名上加上
::$DATA
则显示成功
-
Less-10 特殊字符重写绕过
源码:
将filename加入最终路径会带来极大的风险。
如:
$img_path = UPLOAD_PATH.'/'.$file_name;
特殊字符重写,上传.php文件,用burp抓包修改文件后缀,在后方加上点空格点:
首先创建一个php文件
<?php
echo("iloveyou")?>
然后用brute suite抓包然后在后缀名上加上. .如
1.php. .则显示成功
-
Less-11 双写绕过
源码:
上传.php文件,上传成功。但是查看路径,只有发现文件名,文件后缀木有了。查看提示:
其将文件后缀替换为空了
我们可以后缀名双写绕过,上传文件,
首先创建一个php文件
<?php
echo("iloveyou")?>
用burp抓包修改文件后缀名双写绕过如:1.pphphp
则显示成功
Less-12 白名单GET型%00截断
%00截断原理:
%00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都是以\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\0字符时,就认为读取到一个字符串的结尾符号。因此,我们可以通过修改数据包,插入\0字符的方式,达到字符串截断的目的。%00截断通常用来绕过web软waf的白名单限制。
前提条件:
php版本小于5.3.4,php.ini的magic_quotes_gpc为OFF状态。之后的php版本这个漏洞就被修复了。
例:www.xxx.com/1.php%00.jpg会被解析为:www.xxx.com/1.php。
go:
上传.php文件,提示只允许上传.jpg|.png|.gif类型文件!为白名单验证。
源码:
从:
$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;
对上传文件名进行重新拼接,使用$_GET传参。
首先创建一个php文件
<?php
echo("iloveyou")?>
然后改名为1.png然后
使用进行%00截断,上传一个.png文件,
burp抓包进行%00截断:save_path等于../upload/1.php%00
然后打开控制台
然后打开相应路径把1.php后边的字符删去就可正确回显
-
Less-13 白名单POST型%00截断
与12关基本相当,之前的GET传参变为了POST传参:
$img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;
这次的save_path是通过post传入的,在进行%00截断时需要在hex中修改。
go:
1.修改post参数的值,这里php的后面添加了一个空格和字母a,其实写什么都可以,只是空格的16进制为0x20,比较好记,加个a好找空格的位置。写任意字符都可以,知道其16进制即可。
2.打开hex,修改16进制内容,将空格的16进制20改为00
然后打开控制台点击路径
然后删除.php后面的字符然后打开回显正确
-
Less-14 getimagesize()-图片马
源码:
首先创建一个png文件
里面写入GIF12
然后创建一个php文件
<?php
echo(iloveyou)?>
然后利用命令行使两者变成一个gif文件
首先打开一个文件夹然后利用
Linux: cat 1.png 2.php > 3.gif
可形成一个gif文件
然后上传这个文件用brute suite抓包然后在inspect 可以发现形成了一个gif文件
然后打开当前页面给予的文件包含漏洞PHP文件
然后在该url端输入你形成的file地址如:?file=upload/6820210424161029.gif即可
————————————————
版权声明:本文为CSDN博主「小白白@」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44677409/article/details/92799366