f12在前端js判断函数中加上可以上传php文件
在本地写一个一句话木马后文件名改为jpg之类的,直接上传,抓包将文件名后最改为.php脚本后缀
$_FILES["file"]["name"] – 被上传文件的名称
$_FILES["file"]["type"] – 被上传文件的类型
$_FILES["file"]["size"] – 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] – 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] – 由文件上传导致的错误代码
move_uploaded_file(file,newloc) 函数将上传的文件移动到新位置。
参数 描述
file 必需。规定要移动的文件。
newloc 必需。规定文件的新位置。
如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。
如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。
文件名后缀大小写混合绕过。.php改成.phP然后上传即可。感觉和XSS的一些过滤绕过非常相似。
删除一次php的,双写文件名绕过,文件名改成xx.pphphp
利用Windows系统的文件名特性,比如文件名最后增加点和空格,写成.php.,上传后保存在Windows系统上的文件名最后的一个.会被去掉,实际上保存的文件名就是.php
上传.php::$DATA绕过。如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名。
上传路径名%00截断绕过,上传的文件名写成xx.jpg, save_path改成../upload/xx.php%00,最后保存下来的文件就是11.php;或抓包修改hex值为00进行截断。
文件头检查,添加GIF图片的文件头GIF89a,绕过GIF图片检查。
图片马的制作
copynormal.jpg /b + shell.php /a webshell.jpg
先上传一个.htaccess内容如下的文件:
<FilesMatch ".jpg">
SetHandler application/x-httpd-php
</FilesMatch>
这样所有文件都会解析为php,然后再上传图片马,就可以解析
条件竞争。可以正常上传php文件,抓包后放入intruder模块中选择发送多次,然后在浏览器中访问,若程序对文件名改名,直接访问原文件名