您当前位置: 首页 » 敏感函数 » copy()

copy()

2017年2月13日 | 发表评论(0) 查看评论

copy()和move_uploaded_file()功能差不多,但还是有一些差别的

比如copy()不能访问“临时文件” move_uploaded_file()只接收post过来的内容

在安全性上copy()要比move_uploaded_file()差很多。

如果存在变量覆盖,copy()可以实现任意文件读取甚至getshell。当然如果copy()的是$_FILES还能绕过GPC实现读取和getshell。

实际情形中,很大一部分情况是上传文件后会使用unlink()删除原文件和临时文件,copy()同样能绕过unlink()

这段代码中,如果访问http://www.am0s.com/test/test.php?a=php://filter/resource=1.php会把1.php读到1.txt中,但不会删除1.php

实际场景:

在mlecms2.3中

/inc/include/globals.php

进行了伪全局设置,并且经过daddslashes处理

在inc/class/avatar.class.php中

使用copy()和move_uploaded_file()同时处理上传文件,这里便可以实现任意文件读取。

这样便实现了将db.class.php

之后经过了两个unlink

其中第一个可以通过php://filter/resource=1.php的方式绕过,保护网站文件不被删除,第二个无法绕过,但是可以采用时间竞争的方法去读文件,并且这里的文件名是确定的,可以写个脚本直接读。这些都不是本文重点。

分类:

敏感函数

| 标签: