[ol]array( "method"=>"GET", "header"=>"", "timeout"=>$timeout) ); $context = stream_context_create($opts); if(@copy($url, $file, $context)) { //$http_response_header return $file; } else { return false; } }}?>[/ol]复制代码 代码, 后门
这段代码是一个简单的 PHP 脚本,用于从指定的 URL 下载文件并保存到服务器上。它使用了两种不同的方法来实现文件下载:cURL 和 PHP 的内置 `copy` 函数。 以下是代码的主要功能和步骤: 1. 设置脚本的最大执行时间为无限,这样即使下载需要很长时间,脚本也不会因为超时而中断。 2. 检查是否通过 GET 请求传递了 `url` 和 `filename` 参数。如果没有,脚本将输出错误信息并终止执行。 3. 如果提供了必要的参数,脚本将调用 `httpcopy` 函数来下载文件。 4. `httpcopy` 函数接受三个参数:文件的 URL、要保存的文件名(如果为空,则使用 URL 中的文件名),以及超时时间。 5. 函数首先检查是否提供了文件名,如果没有,则从 URL 中提取文件名。 6. 然后检查文件名指定的目录是否存在,如果不存在,则尝试创建该目录。 7. 使用 `str_replace` 函数将 URL 中的空格替换为 `%20`,以确保 URL 格式正确。 8. 如果服务器支持 cURL,脚本将使用 cURL 来下载文件。设置 cURL 的选项,包括超时时间和返回传输数据。然后执行 cURL 请求,并将结果保存到文件中。如果下载成功且没有错误,函数返回文件路径。 9. 如果服务器不支持 cURL,则使用 PHP 的 `stream_context_create` 函数创建一个上下文,然后使用 `copy` 函数尝试下载文件。如果下载成功,函数返回文件路径。 10. 如果使用 cURL 或 `copy` 函数下载文件失败,函数返回 `false`。 请注意,这段代码可能存在安全风险,因为它允许通过 URL 参数直接下载文件,这可能导致任意文件下载漏洞。在实际应用中,应该对输入的 URL 进行严格的验证和过滤,以防止潜在的安全问题。此外,这段代码没有处理 HTTP 重定向,如果目标 URL 发生重定向,可能会导致下载失败。
人家访问你这个文件,然后加上参数url和filename,就可以下载文件到你服务器上! 单纯httpcopy是没问题的,,也会用到,,但是加上前面这些就很危险了!谁都可以下载文件到你服务器!尤其是filename重命名 下载一个php木马到你服务器,,那你服务器就是人家的了!