首先格式解析是对应的,类型不对无法解析木马

前端js验证(验证不通过都不发包)

通过判断时间和前端源码分析,如果是仅通过js来过滤危险文件类型,直接禁用js以后再上传

解析缺陷

.htaccess

1
AddType application/x-http-php .png

将png图片解析成php文件

文件头校验

直接在文件内容添加一个文件头就行,一般GIF都允许上传

1
GIF89a

黑名单过滤(不在黑名单列表的类型都能上传)

双写绕过(或者多写几轮,但是对于递归验证无法绕过)

大小写绕过(linux敏感:全大写全小写,windows:可大小写混合)

00截断(php小于5.3.4)

ctf遇到过,实战没遇到
当%00无法被解析的时候,将它url解码一下应该就行了,post请求体中要手动解码,如果是在url上的,会自动解码

白名单验证(只允许上传在白名单列表的类型)

条件竞争(实战一般遇不到,ctf比较多)

原理:逻辑缺陷了,先上传再判断

1
<?php                                                 ?>');?>

先上传一次然后在访问,然后重复先访问再上传

二次渲染(要配合文件包含漏洞)

难利用

可能绕过

存储不给执行权限

前提:你能控制你要上传的目录

无解

存储解析(只认数据)

上传后的文件编码存储,由固有协议解析上传的文件数据(与文件后缀无关)

分站存储

oss存储桶

只存储,访问只会出现打开或者下载两种情况