[公开漏洞]Hdwiki Sql Injection#2
-
来源:WooYun 浏览:510次 时间:2014-07-05
Hdwiki Sql Injection#2
相关厂商:
互动在线(北京)科技有限公司
漏洞作者:′ 雨。
提交时间:2014-04-06 12:02
公开时间:2014-07-05 12:03
漏洞类型:SQL注射漏洞
危害等级:中
自评Rank:20
漏洞状态:
厂商已经确认
漏洞来源:http://www.wooyun.org
Tags标签:
无
漏洞详情
披露状态:
2014-04-06:细节已通知厂商并且等待厂商处理中
2014-04-09:厂商已经确认,细节仅向厂商公开
2014-04-12:细节向第三方安全合作伙伴开放
2014-04-19:细节向核心白帽子及相关领域专家公开
2014-04-29:细节向普通白帽子公开
2014-05-19:细节向实习白帽子公开
2014-07-05:细节向公众公开
发现最近Hdwiki的洞 官方都只给2Rank? 分就不能高一点?
牛逼。
虽然这样我还是继续发。
在control/pms.php中
function docheckrecipient(){
$sendto = $this->post['sendto'];
if (WIKI_CHARSET == 'GBK'){
$sendto = string::hiconv($sendto,'GBK','UTF-8',1);
}
$send = explode(',',$sendto);
if(count($send)>10){
$this->message($this->view->lang['fullsend'],'',2);
}
$checkreturn = $_ENV['pms']->check_recipient($sendto,0);
$message = ($checkreturn === true)? 'OK' : ($checkreturn.' '.$this->view->lang['loginTip3']);
$this->message($message,'',2);
}
$sendto = $this->post['sendto'];
if (WIKI_CHARSET == 'GBK'){
$sendto = string::hiconv($sendto,'GBK','UTF-8',1);
}
虽然转义 但是这里
function hiconv($str,$to='',$from='',$force=false) {
if (empty($str)) return $str;
if(!preg_match( '/[\x80-\xff]/', $str)) return $str; // is contain chinese char
if(empty($to)){
if ('utf-8' == strtolower(WIKI_CHARSET)){
return $str;
}
$to=WIKI_CHARSET;
}
if(empty($from)){
$from = ('gbk'==strtolower($to)) ? 'utf-8':'gbk';
}
$to=strtolower($to);
$from=strtolower($from);
//$isutf8=preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $str );
$re = strlen($str) > 6 ? '/([\xe0-\xef][\x80-\xbf]{2}){2}/' : '/[\xe0-\xef][\x80-\xbf]{2}/';
$isutf8 = preg_match($re, $str);
//$force = (substr($to, 0, 3) == 'utf') ? true : $force;
if(!$force && $isutf8 && $to=='utf-8' ) return $str;
if(!$force && !$isutf8 && $to=='gbk' ) return $str;
if (function_exists('iconv')){
$str = iconv($from, $to, $str);
只要force为true的话 就会iconv。
然后直接利用宽字节来注入。
function check_recipient($sendto, $type){
$userinfos = array();
$send = array_unique(explode(',', $sendto));
sort($send);
$num = count($send);
$sendto = str_replace(",", "','", $sendto);
$query = $this->db->query("SELECT username,uid FROM ".DB_TABLEPRE."user WHERE username IN ('$sendto')");
这里由于逗号会被替换 就放弃逗号把。
由于这里没回显 我就直接把结果输出一些把 至少能说明是可以注入的。
盲注。 就不用多说了。
求过滤。
求高分。
危害等级:中
漏洞Rank:10
确认时间:2014-04-09 11:05
厂商回复:安排处理中~~多谢
最新状态:暂无