如何手动创建 $_FILES 文件对象?

Ben*_*Ren 4 php file

我正在攻击 Camilo,因此当用户查看他们的个人议程时,它会自动导入 iCal 文件。到目前为止,我已经能够确定我需要调用的函数来实现这一点。

但是,执行实际导入的函数需要从$_FILES超全局对象引用文件对象。它从中获取文件名$file['tmp_name']并调用file_get_contents()它。

我已经考虑过复制该函数并对其进行更改,因此它需要一个常规文件对象,但这似乎是一种糟糕的处理方式。更好的解决方案是构造它期望的文件对象。但我不知道该怎么做,谷歌搜索也没有帮助。

有没有人有想法?

Pek*_*ica 5

如果库写得很好,这将是不可能的——即使你构造了一个人工$_FILES数组,你也不能欺骗is_uploaded_file()move_uploaded_file()。这些将明确检查传递的文件是否实际上传。(很久以前有一个安全漏洞利用了这个漏洞。AFAIK,这些_uploaded_file()功能是为了响应这个漏洞而引入的。)

您可以尝试$_FILES使用正确的值构建一个数组 - 您可以在此处看到预期的结构。

如果这不起作用(如上所述,它不应​​该),您将别无选择,只能更改库。在我看来,无论如何,这是更清洁的方式。