sed从php第一行删除

时间:2014-07-22 11:20:33

标签: sed malware

我在共享主机中被黑了。所有php文件都在目录中有这种代码。我敢打赌,我有旧的WordPress安装,已经将一些恶意软件放入了web目录。当我没有删除那些时,我感到羞耻。现在我有两个有恶意软件的活动网站,我没有备份。所有恶意软件文件都在第一行<?php ........ ?>现在我需要删除它。我试过Remove the first line with sed with a regular expression,但没有帮助。它没有删除任何东西。

<?php $xmrcycpmjf= 6767~6<Cw6<pd%x5c%x7825w6Z6<.57825mm)%x5c%x7825%x5c%x7878:-.........!%x5c%x7825tzw%x5x5c%x7860hA%x5c%x7827pd%x5c%x78256<pd%x5c%x7825w6Z6<.2%x5c25h>#]y31]278]y35\141\x70\146\x66\153\x74\154\x20\52\x2f\40\x65\166\x61\154\x28\163\x74\162\x5f\162\x65\160\x6c\141\x63\145\x28\143\x68\162\x28\50\x32\63\x34\55\x31\71\x37\51\x29\54\x20\143\x68\162\x28\50\x35\65\x35\55\x34\66\x33\51\x29\54\x20\171\x79\166\x6f\151\x6b\157\x68\157\x68\50\x24\143\x6d\142\x78\170\x61\153\x63\144\x6e\54\x24\170\x6d\162\x63\171\x63\160\x6d\152\x66\51\x29\51\x3b\40\x2f\52\x20\157\x73\144\x6f\167\x6d\150\x72\145\x7a\40\x2a\57\x20"; $vmdcgfyvud=substr($xmrcycpmjf,(39882-29769),(52-40)); $vmdcgfyvud($efppuciabz, $ucpqtjetra, NULL);...... $vmdcgfyvud=$ucpqtjetra; $vmdcgfyvud=(409-288); $xmrcycpmjf=$vmdcgfyvud-1; ?><?php echo "test"?>

我希望它看起来像这样

<?php echo "test"?>

4 个答案:

答案 0 :(得分:0)

您可以使用sed

,而不是使用tail
tail -n +2 file > output
mv output file

tail只是忽略第一行,其他行只是回显。


或者您可以使用grep之类的-v标记来忽略该行:

grep -v -F '<?php $xmrcycpmjf= 6767~6<Cw6<pd%x5c%x7825w6Z6<.57825mm)%x5c%x782...' < file

答案 1 :(得分:0)

这会吗?

awk -F"<" '{print FS$NF}' file
<?php echo "test"?>

答案 2 :(得分:0)

试试这个简单的sed命令,

sed '1s/.*\(<.*\)$/\1/g' file

OR

sed '1s/.*</</g' file

答案 3 :(得分:0)

假设恶意软件始终包含在第一个(!)php块中,您可以使用此正则表达式

^(<\?php)(.*?)(\?>)

删除第一个PHP Block以递归方式运行每个文件,并用空字符串替换第一个匹配。

例如使用PHP

<?php
//Save as clean.php
function cleanup($dir) {
$dirh = opendir($dir);

if ($dirh) {
    while (($file = readdir($dirh)) !== false) {
        $file_path = $dir . "/" . $file;

        if(is_file($file_path)){
            $info = pathinfo($file_path);

            if($info['extension'] === "php" && $info['basename'] != "clean.php"){
                file_put_contents($file_path, preg_replace('/^(<\?php)(.*?)(\?>)/', '', file_get_contents($file_path), 1));
            }
        } else if(is_dir($file_path)){
            return cleanup($file_path);
        }

    }

    closedir($dirh);
}
}
cleanup('web'); //Pass the name of infected dir

此代码未经过测试!

请记住备份所有内容!