乌云(WooYun.org)历史漏洞查询---http://wy.zone.ci/
乌云 Drops 文章在线浏览--------http://drop.zone.ci/
2014-04-06: 细节已通知厂商并且等待厂商处理中 2014-04-09: 厂商已经确认,细节仅向厂商公开 2014-04-12: 细节向第三方安全合作伙伴开放 2014-06-03: 细节向核心白帽子及相关领域专家公开 2014-06-13: 细节向普通白帽子公开 2014-06-23: 细节向实习白帽子公开 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
安排处理中~~多谢
暂无