2

クエリを組み立てて大混乱を引き起こしている PHP スクリプトを見つけようとしています。これまでのところ、grep を使用してスクリプトを見つけることに成功していません。

show processlistクエリを発行する PHP スクリプトを見つけるために mySQL pid を使用することは可能ですか?

4

1 に答える 1

2

そうは思わないでください。実際のアーキテクチャとトポロジに大きく依存します。

たぶん - これもコンテキストによっては非常に混乱を招く可能性があります - 誤動作/悪意のあるクエリを認識し、すべての関連情報をログに記録するために、mysql_query 関数 (またはさまざまなスクリプトで使用されているラッパー) をオーバーライドしようとする可能性があります。 .

参照: http://no2.php.net/runkit_function_redefine

ロギングは大混乱を引き起こすスクリプトの「内部」から行われるため、より多くの情報が利用可能になります。

もう 1 つの可能性は、MySQL クエリをフィルター処理し、長時間待機する、エラーをスローするなど、スクリプトで認識可能な動作を誘導することです。これは、MySQL プロキシ経由で実行できる場合があります: https://launchpad.net/mysql-proxy

スクリプトが悪意のあるものであると仮定すると、スクリプトが見つからない場合は、何らかの暗号化が行われている可能性があります。通常、そのようなスクリプトは、eval()、base64_decode、場合によっては gzuncompress() を多用します。これらの関数を探す方が、クエリ フラグメントを検索するよりも生産的である可能性があります。

現在はあまり役に立たない便利なハックは、"SELECT ... WHERE ...; -- 012345" のようなコメントを明らかにしてクエリを "装飾" することです: "-- 012345" の部分は MySQL によって無視されます。 、しかし簡単にログに記録でき、「-- 012345」をgrepするとターゲットがすぐに見つかります。

于 2012-07-07T00:03:34.183 に答える