这里以Apache服务的靶场来做讲解
我们用phpinfo();来模拟木马所以之后的内容中此代码生效即可代表木马可行
1. js绕过:
将当前网页下载到本地,再使用编辑器对js代码进行修改,使得其验证判定失效在由此进行上传;
亦或是使用其他方法将js禁用
2.白名单:
代码要求仅限(.xxx .xxx)的文件通过,这时就需要用到抓包工具来进行修改我这里用得是BP,将截获包中Conten-type:后的内容修改为其要求的image/png 即可。随后我们复制地址来访问我们的php文件可见php版本说明我们成功了
3.黑名单:
会禁止我们上传文件的类型,这里我们要利用一个Apache某版本下对php解析的一个特性---对,php__都可解析,所以我们将上传文件后缀更改为.php3来避开其黑名单.php;注意我们访问的是我们上传的.php3
4. 利用超文本:
编写一个.htaccess 其内容为
<FilesMatch "loudong.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
因为我们使用超文本指向了loudong.jpg所用我们将之前使用的1.php改名为loudong.jpg上传
因为我们上传的jpg其实是php文件所以直接访问jpg文件即可
5.大小写:
由于有些时候并没有设计将内容转化为小写所以我们可以尝试将php写成PHP来进行上传
6.末尾空格:
在.php 后加一个空格用来干扰判断
7.结尾加点:
还是利用了之前提到的一点我们在.php加上.成为.php.进行绕过
8.特殊字符串使其不进行结尾的判断:
我们可以借助::$DATA字符串来实现让其不对我们上传的文件后缀进行判断以此来达到我们的目的
这里我们复制地址但是并没有看到php的版本问题出在了哪里呢,因为我们的马是.php并不是.php::$DATA所以将多余的去掉就可以了
9.代码不严谨:
因为删点的代码使用deldot会从后往前删除末尾的.直到前面不再是.所以可以使用类似的手法.php. .用空格隔断两个.
10.文件名替换:
会遇到将.php中的php替换为空的类型,怎么解决呢,将后缀更改为.pphphp在其替换后留下的仍为.php
如果没有以.php结尾会无法看到版本说明失败啦
正确的修改替换后会如图所示
每次的分享交流就先到这里如果大家一起探讨交流可以评论或者私信我我们下期再见