Perl CGI代码错误
Perl CGI code bug
你好,这段代码中有漏洞吗?攻击者是否可以绕过此并上传其他文件或webshell?或者它是安全的
#!/usr/bin/perl
use CGI;
$q = new CGI;
if (defined($q->param('Head'))) {
print $q->header(-type=>'image/bmp');
open(HEAD,"head".$q->param('Head'));
open(HAIR,"hair".$q->param('Hair'));
open(NOSE,"nose".$q->param('Nose'));
open(MOUTH,"mouth".$q->param('Mouth'));
open(EYES,"eyes".$q->param('Eyes'));
while (read(HEAD,$headb,1)) {
read(HAIR,$hairb,1);
read(NOSE,$noseb,1);
read(MOUTH,$mouthb,1);
read(EYES,$eyesb,1);
print (chr (ord($headb)&ord($hairb)&ord($noseb)&ord($mouthb)&ord($eyesb)));
}
}
else {
print $q->header;
print $q->start_html(-title=>"Hello wolrd test",-script=>{'src'=>'/js.js'},-style=>{'src'=>'/css.css'});
print $q->div(
$q->h1("Avatar Generator"),
$q->p("make your face !"),
"<video><source src='https://zippy.gfycat.com/DesertedEasygoingArabianwildcat.webm'></source></video><canvas></canvas>",
$q->start_form(-id=>"frm",-method=>"POOP",-action=>"#",-onchange=>"loadImage()"),
$q->br(),
$q->table(
$q->Tr($q->td([$q->b("Head"),$q->input({-name=>"Head",-type=>'range',-min=>1,-max=>4})])),
$q->Tr($q->td([$q->b("Hair"),$q->input({-name=>"Hair",-type=>'range',-min=>0,-max=>2})])),
$q->Tr($q->td([$q->b("Nose"),$q->input({-name=>"Nose",-type=>'range',-min=>1,-max=>3})])),
$q->Tr($q->td([$q->b("Mouth"),$q->input({-name=>"Mouth",-type=>'range',-min=>1,-max=>3})])),
$q->Tr($q->td([$q->b("Eyes"),$q->input({-name=>"Eyes",-type=>'range',-min=>1,-max=>3})]))
),
$q->end_form
);
open SELF, "index.cgi";
print $q->comment("DEBUG SOURCE'n".do { local $/; <SELF> });
print $q->end_html();
}
和JS代码http://pastebin.com/JvwQkVMT
任何帮助都将是伟大的感谢
永远不要接受进程所有者以外的用户的任意文件名
通过为所有五个字段传递相同的文件名,客户端可以获取服务器可以访问的任何文件。
但与通过其中一个字段的以下内容相比,这算不了什么:
rm -rf / |
相关文章:
- 咕噜声.js无法读取文件(错误代码:EISDIR)
- 科尔多瓦指南针 API 给出错误代码 3
- 如何在使用JavascriptCallbackBehavior时引发带有HTTP错误代码的WebFaultExcepti
- 解析错误代码 121
- Ajax get jsonp给出错误代码500“;请求被阻止”;来自MVC应用程序
- ionic http获取到本地文件会给出http错误代码0
- Imacros/jQuery TypeError:无法访问死对象,第 816 行(错误代码:-991)
- 电话差距/网络数据库错误代码说明
- NaN 错误代码有什么问题
- 异常:“远程主机关闭了连接.错误代码为 0x80070057”
- 咕噜声/巴别塔错误:无法写入“dist”文件(错误代码:EISDIR)
- 科尔多瓦的文件传输写入错误(代码 1)
- 角度$asyncValidators将错误代码传输到模板
- 接收错误代码 3,http_status空,正文空,异常状态 2
- 运行 grunt.file.copy 返回错误代码:ENOENT
- Parse.com 找不到错误代码:141 函数
- 尝试运行作业时分析错误代码 1 内部错误
- 节点 js 退出状态 8,错误代码 0 在 Mac 上运行
- 如何使用mootools确定损坏图像上的错误代码
- HTML 错误代码 206