Php 使用regex删除注入
我正在寻找这个特定的行从第1行大约16000多个文件 注射的开始是: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
<?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
方言。