Php 使用regex删除注入

Php 使用regex删除注入,php,regex,bash,sed,Php,Regex,Bash,Sed,我正在寻找这个特定的行从第1行大约16000多个文件 注射的开始是: <?php if(!isset($GLOBALS` Middle of the injection is: `7860msvd` And end of the injection is: `oqggbrtstz-1; ?> 您缺少一些特殊字符的文字,如?并使用-r获得预期结果 sed -ri '1 s/.*<\?php if\(\!isset\(\$GLOBALS.*7860msvd.*oqggbrt

我正在寻找这个特定的行从第1行大约16000多个文件

注射的开始是:

<?php if(!isset($GLOBALS`

Middle of the injection is:
`7860msvd`

And end of the injection is:
`oqggbrtstz-1; ?>

您缺少一些特殊字符的文字,如
并使用
-r
获得预期结果

sed -ri  '1 s/.*<\?php if\(\!isset\(\$GLOBALS.*7860msvd.*oqggbrtstz-1; \?>//g' File

   -r, --regexp-extended

          use extended regular expressions in the script.
sed-ri'1s/*//g'文件
-r、 --regexp扩展
在脚本中使用扩展正则表达式。

命令的语法更正

sed -i -e '1 s/.*<\?php if(\!isset(\$GLOBALS\.*7860msvd.*oqggbrtstz-1; \?>//g'
sed-i-e'1s/*//g'

当不存在反向引用且缺少转义到时,不需要转义()。

@josifoski是对的,不要转义括号。对其答案进行了细微的修改,以避免在注入前剥离代码:


sed-i-e'1s///g'

缺少的一个重要答案是“不要那样做”。在你做任何其他事情之前,先加固网站。然后从已知良好的备份还原站点,或从版本控制重新部署站点


发现并修补已知问题不是一个正确的解决方案。它会消除一个明显的症状,但不会阻止你再次被黑客攻击。有了大量的代码库,入侵者很可能会留下你还没有注意到的其他惊喜。

可能是一个文件中的多次注入?这里有没有需要的部件,例如中间或末端?是一条线还是(如样本所示)几条线作为图案?@Scivic,非常欢迎您。你可以接受它,这样我将得到一个绿色的勾号。它如何在多行上工作?一次只需要一行?示例显示了
*
和无新行/缓冲区加载之间的几行。@NeronLeVelu,我认为这些内容以单行形式出现,就像我发布的答案一样。如何在所有php文件上运行它?上面的命令和使用regex
*.php
。而不是传递单个文件传递
*。php
是否应转义paren取决于
sed
方言。