0

我有一个用于上传的 cgi 脚本,如下所示

#!/usr/bin/perl
use CGI;
use CGI::Carp qw(fatalsToBrowser);

my $cgi = new CGI;
my $file = $cgi->param('file');
$file=~m/^.*(\\|\/)(.*)/; # strip the remote path and keep the filename
my $name = $2;
open(LOCAL, ">/home/Desktop/$name") or die $!;

while(<$file>) {
  $data .= $_;
}
print $cgi->header();
print "$file has been successfully uploaded... thank you.\n";
    print $data;

HTML文件如下

<html>
<head>
    <title>Test</title>
</head>

<body>
    <form enctype="multipart/form-data" action="upload.cgi" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
            Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
</body>
</html>

我现在收到一个奇怪的错误..

软件错误:

是 htdocs/upload.cgi 第 9 行的目录。

如需帮助,请向本网站的网站管理员发送邮件,提供此错误消息以及错误的时间和日期。

4

1 回答 1

1

很可能是open中指定的路径

open(LOCAL, ">/home/Desktop/$name") or die $!;

指向一个目录。这可能是因为$name它是空的(因此/home/Desktop/ 一个目录)或者目标名称是桌面下的一个目录。

我必须考虑更多,并尝试变得邪恶,但我相当确定有一些方法可以指定路径之外的路径,您打算允许邪恶的人在您不这样做的地方上传文件'没想到他们会这样。

于 2013-10-18T02:34:26.590 回答