【发布时间】:2013-07-08 06:14:46
【问题描述】:
我正在制作一个脚本,用于将文件远程上传到我的服务器,这里是代码。顺便说一句,我从一个网站上拿了它。我没有发布站点名称,否则它可能会被视为垃圾邮件或其他内容。它关于将远程文件下载到我们的服务器。
<?php
if (isset($_POST['myupload']))
{
$links_list = $_POST['upload'];
$incr = 0;
$links = explode("\r\n",$links_list);
define('BUFSIZ', 4095);
for ( $incr == 0 ; $incr < count($links) ; $incr++ )
{
$url = $links[$incr];
$rfile = fopen($url, 'r');
$lfile = fopen(basename($url), 'wb');
while(!feof($rfile))
fwrite($lfile, fread($rfile, BUFSIZ), BUFSIZ);
fclose($rfile);
fclose($lfile);
}
}
?>
<script type="text/javascript"></script>
</head>
<body>
<div id="upload_box">
<form action="" method="post">
<textarea name="upload" cols=80 rows=20></textarea>
<input type="submit" name="myupload" value="Upload Files">
</form>
我想问一些关于这个脚本的事情。
$lfile = fopen(basename($url), 'wb')fwrite($lfile, fread($rfile, BUFSIZ), BUFSIZ);
我知道我问的是一个愚蠢的问题,但希望你们能帮我解释一下。
【问题讨论】:
-
注意“for”循环通常应该assign $incr ($incr = 0),而不是test it ($incr == 0 )。代码仍然有效,因为 $incr also 在上面几行归零。然后,fopen 应该检查错误,以避免脚本崩溃。此外,您的代码是可以利用的。我可以使用它让你的服务器代表my发出HTTP调用和可能上传远程可执行代码。请记住不要将其留给匿名用户使用。
-
@Iserni 别再吓我了:P Jk 伙计,是的,我知道伙计,任何人都可以通过这个上传页面在我的服务器上上传 shell。