2

我们正在尝试找到一个 PHP 脚本,该脚本正在组装一个查询并造成严重破坏。到目前为止,我们还没有成功使用 grep 来定位脚本。

是否可以使用 mySQL pidshow processlist来定位发出查询的 PHP 脚本?

4

1 回答 1

2

不要这么想。很大程度上取决于实际的架构和拓扑。

也许——这也可能具有极大的破坏性,具体取决于上下文——您可以尝试覆盖 mysql_query 函数(或各种脚本中使用的任何包装器),以便识别行为不端/恶意查询并记录所有相关信息.

见: http: //no2.php.net/runkit_function_redefine

由于日志记录将在破坏性脚本的“内部”进行,因此可以获得更多信息。

另一种可能性是过滤 MySQL 查询并在脚本中引发一些可识别的行为,例如等待很长时间或抛出错误。这可以通过 MySQL 代理实现:https ://launchpad.net/mysql-proxy

假设脚本是恶意的,无法定位它可能指向某种加密 - 通常此类脚本大量使用 eval()、base64_decode 和有时 gzuncompress()。寻找这些函数可能比搜索查询片段更有效率。

一个有用的技巧,现在不是很有用,可能是用暴露的注释“装饰”查询,例如,“SELECT ... WHERE ...; -- 012345”:“-- 012345”部分将被 MySQL 忽略, 但可以很容易地记录下来,并且 grepping "-- 012345" 会很快找到目标。

于 2012-07-07T00:03:34.183 回答