PHP开发-文件上传下载删除
通过实现PHP代码开发实现相关的功能,我们可以更好的了解漏洞产生的原理,以及那种方式会产生漏洞,哪种方式不会产生漏洞,以方便我们更好的选择相关的攻击方式
文件上传类
文件上传类总共包括两种方式,一种是代码自主写,另一种是引用相关的富文本编辑器
代码自主写
相关实现代码
@$file_name = $_FILES['upload']['name']; |
其中$_FILES是PHP全局数组,用来展示上传文件的基本属性
move_uploaded_file(文件临时名,文件路径.文件名),其中在php中一般使用.来连接变量名
编辑器引用
引用别人写的相关的编辑器为js文件,即使用别人封装好的代码,例如以下相关代码
<script type="text/javascript" charset="utf-8" src="../../ueditor/ueditor.config.js"</script> |
如果相关编辑器爆出相关漏洞,那么这个网站也会有相关漏洞,如果引用的编辑器没有任何漏洞,那么这个网站在文件上传方面就没有漏洞
总结: |
文件下载类
直连URL访问
相关代码
function filenameurl($name){ |
直连url下载,即访问相关url即下载相关文件,例如访问http://www.xxx.com/xxx.zip
,会直接执行下载xxx.zip
但是直连下载也有一个特点,如果是zip、rar、png、jpg等文件,就会去下载,如果是php或者txt这一类文件,就会去执行,不会去下载,当然,php不会当作php执行,而是将其中的内容输出出来,并不会当作php文件执行
所以,如果是直连URL访问,那么是不可能存在漏洞的,因为参数是不可控的,就算传进去了php文件,也无法执行,只能看看
传参下载
|
从这串代码可以看出,传参下载的参数我们是可以控制的,并且传参下载是通过文件流的形式一点一点返回的,即无论是否是php还是zip,都会进行下载处理,并且php代码会被执行,并不是简简单单的打开php代码
所以这种方式进行文件下载是有漏洞的,如果后端没有对传入的参数进行过滤,我们就可以实现任意文件访问
形如http://www.xxx.com/?filename=
文件删除类
文件删除
function filedel($name){ |
文件夹删除
function filedeldir($dir){ |
无论是文件还是文件夹的删除,如果导致了任意文件删除,那么非常可能造成源码被删,网站崩溃
文件内容操作类
文件读取
function fileread($name){ |
文件写入
function filewrite($name,$txt){ |
文件读取和文件写入都存在后门植入的风险