我的服务器最近被黑客攻击并注入了PHP代码,并且在每个php文件的第一行都有类似的内容
<?php $jybcqmhk = 'x24- x24*<!~! x24/%t2w/ //truncated code ?><?php
代码本身在每个文件上略有不同,但通常在第一个文件之后?&gt;我的实际代码开始了。
有没有办法使用像SED这样的东西,我可以删除第一行之间的所有内容,然后离开其余部分。
我尝试了一些事情,但结果是在php结束标记之后有额外的php开启标记或意外删除了代码。
例如,这在代码以php开始标记开头的地方起作用,但是其他任何东西都会中断。
find ./ -iname '*.php' -exec sed -i '1 s/^.*$/<?php/g' {} \;
答案 0 :(得分:2)
也许这可能会有所帮助:
find ./ -iname '*.php' -exec sed -i '1 s/<?php/\n&/2;s/<?php.*\n//' {} \;
sed命令运行2次替换:第一次将第一个<?php ?>
命令隔离在一个新行中,第二个删除它。