关于php的一个漏洞

....
@extract($MOD);
include template($mod, 'reflink');
....

请问以上的php代码是不是存在php的远程文件包含漏洞啊?

该怎么利用呢?

extract()函数有什么用的啊?

extract()函数前面的@有什么用?

template()函数有什么用啊?

extract() 例子
<?php
$size = "large";
$var_array = array("color" => "blue",
"size" => "medium",
"shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");
echo "$color, $size, $shape, $wddx_size\n";
?>

上例将输出:
blue, large, sphere, medium

EXTR_OVERWRITE
如果有冲突,覆盖已有的变量。

EXTR_SKIP
如果有冲突,不覆盖已有的变量。

EXTR_PREFIX_SAME
如果有冲突,在变量名前加上前缀 prefix。

EXTR_PREFIX_ALL
给所有变量名加上前缀 prefix。自 PHP 4.0.5 起这也包括了对数字索引的处理。

EXTR_PREFIX_INVALID
仅在非法/数字的变量名前加上前缀 prefix。本标记是 PHP 4.0.5 新加的。

EXTR_IF_EXISTS
仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖这些变量的场合。本标记是 PHP 4.2.0 新加的。

EXTR_PREFIX_IF_EXISTS
仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。本标记是 PHP 4.2.0 新加的。

EXTR_REFS
将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用。本标记是 PHP 4.3.0 新加的。

如果没有指定 extract_type,则被假定为 EXTR_OVERWRITE。

在语句前 加上 “@”可以屏蔽当前输出的错误 比如 这里$MOD出错了 本来是应该显示错误或者程序终止的 就跳过不显示错误并且继续执行了

这里的template函数应该是一个模板处理的 到底会不会出现文件包含漏洞还要具体分析这个函数 以及服务器的php配置参数

这里看这个地方漏洞几乎是不可能的 因为这里$MOD你不可能通过外部赋值 除了register_global=on是可能的 如果template函数里面对于文件路径的检查不严格 比如直接用mod 除非同时服务器允许包含远程文件的俄设置为on 这两个配置条件+template检测不严格同时满足的话或许能是个漏洞 但是这种情况的概率极其低

参考资料:http://www.nayitian.net

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网