* 要完成这个***,要满足以下几个条件:
 - 首先,上传的文件能够被Web容器解释执行。所以文件上传后所在的目录要是Web容器所覆盖到的路径。
 - 其次,用户能够从Web上访问这个文件。如果文件上传了,但用户无法通过Web访问,或者无法得到Web容器解释这个脚本,那么也不能称之为漏洞。
 - 最后,用户上传的文件若被安全检查、格式化、图片压缩等功能改变了内容,则也可能导致***不成功。


* 五、设计安全的文件上传功能
 - 1、文件上传的目录设置为不可执行
 - 2、判断文件类型:强烈推荐白名单方式。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。
 - 3、使用随机数改写文件名和文件路径:一个是上传后无法访问;再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法***。
 - 4、单独设置文件服务器的域名:由于浏览器同源策略的关系,一系列客户端***将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。

------------------

https://blog.csdn.net/c465869935/article/details/51800354 
关于上传安全的,这篇说的很详情,上传注入和原理

http://blog.51cto.com/wt7315/1865580 
文件上传漏洞及解析漏洞总结