使用sed在第一行代码中删除<! - ?php? - >之间的所有内容

时间:2016-02-12 08:57:04

标签: php linux sed

我的服务器最近被黑客攻击并注入了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' {} \;

1 个答案:

答案 0 :(得分:2)

也许这可能会有所帮助:

find ./ -iname '*.php' -exec sed -i '1 s/<?php/\n&/2;s/<?php.*\n//' {} \;

sed命令运行2次替换:第一次将第一个<?php ?>命令隔离在一个新行中,第二个删除它。