我的网站遭到黑客入侵。它在我所有php文件的第一行添加了一些脚本。我想使用Netbeans搜索删除该脚本,并替换为 REGEX 选项。
似乎hack脚本上有相同的模式
<?php /**/ eval(base64_decode("[SomeRandomString]"])); ?>
你可以给我REGEX模式删除上面的字符串吗?
以下是我的黑客全文http://ideone.com/6ltMf
的示例答案 0 :(得分:3)
这样的东西与您的简短示例和您粘贴的示例匹配:
$pattern = '~^\<\?php\s?\/\*\*\/\seval\(base64\_decode\(\".*?\)\)\;\s?\?\>~'
// You might need to incorporate the multi-line option at the end of the pattern
Hindsight是20/20:将来您应该考虑使用版本控制系统来快速重置所有更改的文件。
答案 1 :(得分:0)
为什么不手动删除它?如果您有太多文件要做,那么自动化听起来不错。因为它正在解码字符串并将其作为PHP表达式进行评估,所以如果它实际上是自动化的,那么它应该在每个文件上都是相同的。只需准确复制字符串,并告诉您的脚本在所有.php文件中查找完整的字符串。我相信它就像是
"eval(base64_decode("aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydC.......));"
特殊字符是:[\ ^ $。|?* +(),如果你想搜索它们,你需要在它们前面添加一个“\”,以便匹配正常工作,所以你的RE变为:
"eval\(base64_decode\("aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydC.......\)\);"
您需要检查字符串是否包含更多特殊字符。此外,您可能只想重新安装您的PHP版本,具体取决于此病毒的功能,但您应该只是google“eval base64_decode”,这就是我发现的有关该病毒的论坛帖子。