用于删除php文件中的代码的正则表达式

时间:2014-01-02 17:02:38

标签: regex unix sed

我想创建一个正则表达式来删除一些巨大的PHP代码(被黑客攻击)。

这里可以看到代码 click here for pastebin file

我想删除的是使用它:

find /home \( -name "*.html" -o -name "*.php" \) -exec sed -i.bak 's/<?php $oqwjihijbu = '($GLOBALS["%x61%156%x75%156%x61"]))))//g' \{\} \;

任何帮助都将非常感谢!

1 个答案:

答案 0 :(得分:1)

为了实现预期目标,正则表达式需要对其元字符进行转义(即? $ [ ]):

find /home \( -name "*.html" -o -name "*.php" \) \
  -exec sed -i.bak \
   's/<\?php \$oqwjihijbu = \'(\$GLOBALS\["%x61%156%x75%156%x61"\]))))//g' {} \;

但即便如此,你只是在注入攻击的最初阶段删除了一些PHP代码,看起来它会留下一个格式错误的PHP文件无论如何都无法运行。删除完整的攻击代码几乎肯定比使用单个sed表达式更多。

我担心你在这里受到伤害的世界,并建议你擦拭网络服务器以及从头开始重新安装网站代码会好得多。