【问题标题】:Run PHP file when uploaded上传时运行 PHP 文件
【发布时间】:2022-01-11 19:20:25
【问题描述】:

我在本地服务器上有一个简单的 php 网站,它只是在服务器上上传任何类型的文件(我本地电脑上的目录)。

我想要的是,当我上传一个 php 文件时,我希望它执行,而不仅仅是保存它。 没有安全性,就是想看看能不能在上传的时候执行一个php脚本。 我怎样才能做到这一点?

【问题讨论】:

  • 好的,如果“正常”文件中的代码不是通过表单上传的,你将如何获取它来执行...?然后对你上传的文件做同样的事情。
  • 我会明确地运行它。我想要的是某种注入,它运行上传的 php 文件而不显式运行它
  • 看起来你在问php执行是如何工作的,也许这可以帮助你stackoverflow.com/questions/51961985/…,除了在apache web中运行的php中调用它也可以自动启动,更快的方法是每秒由 crontab 触发的 bash 可以检查是否有任何新上传的文件并在重命名或移动之前运行它执行“已处理”文件夹或创建适当的守护程序/服务程序

标签: php file-upload server code-injection


【解决方案1】:

您可以将文件写入磁盘,然后再请求它。如果您不需要永久使用该文件,那么我建议您使用temp file。

我建议然后使用require_once 来执行文件。

类似于(为简单起见,我使用硬编码的文件名):

<?php

// Logic for handling the file upload goes here

// Demo script to run, this should be the contents of the file uploaded.
$upload_contents = '<?php echo "I have been uploaded."; ?>';

// Write the file to disk, I've used a hard-coded name and contents to serve the purpose of an example
file_put_contents('UploadedScript.php', $upload_contents);

// Since security is not a requirement, we will just straight require the file so PHP will execute it.
require_once('UploadedScript.php');

?>

编辑:如果您想上传任何类型的文件,但只执行带有“.php”扩展名的文件,那么我建议查看these answers。然后您可以在执行之前检查以确保上传的文件是“.php”扩展名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多