### 简要描述:
我这么认真,你们还是给我点对应的rank吧
### 详细说明:
算上关联的函数,本来还有很多的,我自己也没有找了,
我测试的是utf版本的,你们gbk版本由于这个问题已经炸了,希望好好审查
下面我拿 control\user\message_send.php文件举例,同样问题的我找的还有 message.php,yijia.php
```
<?php defined ( 'IN_KEKE' ) or exit('Access Denied');
$strUrl = 'index.php?do=user&view=message&op=send';
if (isset ( $formhash ) && kekezu::submitcheck ( $formhash )) {
	$title  = kekezu::str_filter ( kekezu::escape (strip_tags(htmlspecialchars_decode($title)   ))) ;
	$content  = kekezu::str_filter ( kekezu::escape (strip_tags(htmlspecialchars_decode($content)   ))) ;
	$objMsgM = new Keke_witkey_msg_class ();
	if (strtoupper ( CHARSET ) == 'GBK') {
		$to_username = kekezu::utftogbk($to_username );
	}
	$arrSpaceInfo = kekezu::get_user_info ( $to_username, 1 );
	if (! $arrSpaceInfo) {
		$tips['errors']['to_username'] = '用户不存在';
		kekezu::show_msg($tips,NULL,NULL,NULL,'error');
	}
	if ($arrSpaceInfo ['uid'] == $gUid) {
		$tips['errors']['to_username'] = '无法给自己发送';
		kekezu::show_msg ( $tips, NULL, NULL, NULL, 'error' );
	}
	if (strtoupper ( CHARSET ) == 'GBK') {
		$title = kekezu::utftogbk($title );
		$content = kekezu::utftogbk($content );
	}
	$objMsgM->setUid ( $gUid );
	$objMsgM->setUsername ( $username );
	$objMsgM->setTo_uid ( $arrSpaceInfo ['uid'] );
	$objMsgM->setTo_username ( $arrSpaceInfo ['username'] );
	$objMsgM->setTitle ($title );
	$objMsgM->setContent ($content);
	$objMsgM->setOn_time ( time () );
	$objMsgM->create_keke_witkey_msg ();
	unset ( $objMsgM );
	kekezu::show_msg ( '已保存', 'index.php?do=user&view=message&op=outbox', NULL, NULL, 'ok' );
}else{
	$objUid and $intObjUid = intval($objUid);
	$arrObjInfo =  kekezu::get_user_info ( $intObjUid);
}
```
我们跟进 utftogbk() /lib/inc/keke_base_class.php
```
static function utftogbk($string) { 
		$string = self::charset_encode ( "utf-8", "gbk", $string );
		return $string;
	}
```
继续 
```
static function charset_encode($_input_charset, $_output_charset, $input) {
		$output = "";
		$string = $input;
		if (is_array ( $input )) {
			$key = array_keys ( $string );
			$size = sizeof ( $key );
			for($i = 0; $i < $size; $i ++) {
				$string [$key [$i]] = self::charset_encode ( $_input_charset, $_output_charset, $string [$key [$i]] );
			}
			return $string;
		} else {
			if (! isset ( $_output_charset ))
				$_output_charset = $_input_charset;
			if ($_input_charset == $_output_charset || $input == null) {
				$output = $input;
			} elseif (function_exists ( "mb_convert_encoding" )) {
				$output = mb_convert_encoding ( $input, $_output_charset, $_input_charset );
			} elseif (function_exists ( "iconv" )) {
				$output = iconv ( $_input_charset, $_output_charset, $input );
			} else
				die ( "sorry, you have no libs support for charset change." );
			return $output;
		}
	}
```
iconv()函数,哈哈  
我们随便注册个账号登陆 
进入发消息界面  这里我们需要把发消息的对象填正确 下面的标题,内容随便你选哪个,我这里方便闭合,选择内容
对象 admin(默认存在) 标题 111111 内容 123錦'and sleep(1),123)#   这里必须用#注释,%23是无效的
[<img src="https://images.seebug.org/upload/201510/1720360312fdd180217d5d38aebae98fa16c051d.png" alt="QQ截图20151017183604.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201510/1720360312fdd180217d5d38aebae98fa16c051d.png)
[<img src="https://images.seebug.org/upload/201510/172036204066fe88c01519883a58bafd4bc816fd.png" alt="QQ截图20151017183434.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201510/172036204066fe88c01519883a58bafd4bc816fd.png)
成功 sleep() 
本来很多的没有刷了,希望上个首页,么么哒
 
### 漏洞证明:
算上关联的函数,本来还有很多的,我自己也没有找了,
我测试的是utf版本的,你们gbk版本由于这个问题已经炸了,希望好好审查
下面我拿 control\user\message_send.php文件举例,同样问题的我找的还有 message.php,yijia.php
```
<?php defined ( 'IN_KEKE' ) or exit('Access Denied');
$strUrl = 'index.php?do=user&view=message&op=send';
if (isset ( $formhash ) && kekezu::submitcheck ( $formhash )) {
	$title  = kekezu::str_filter ( kekezu::escape (strip_tags(htmlspecialchars_decode($title)   ))) ;
	$content  = kekezu::str_filter ( kekezu::escape (strip_tags(htmlspecialchars_decode($content)   ))) ;
	$objMsgM = new Keke_witkey_msg_class ();
	if (strtoupper ( CHARSET ) == 'GBK') {
		$to_username = kekezu::utftogbk($to_username );
	}
	$arrSpaceInfo = kekezu::get_user_info ( $to_username, 1 );
	if (! $arrSpaceInfo) {
		$tips['errors']['to_username'] = '用户不存在';
		kekezu::show_msg($tips,NULL,NULL,NULL,'error');
	}
	if ($arrSpaceInfo ['uid'] == $gUid) {
		$tips['errors']['to_username'] = '无法给自己发送';
		kekezu::show_msg ( $tips, NULL, NULL, NULL, 'error' );
	}
	if (strtoupper ( CHARSET ) == 'GBK') {
		$title = kekezu::utftogbk($title );
		$content = kekezu::utftogbk($content );
	}
	$objMsgM->setUid ( $gUid );
	$objMsgM->setUsername ( $username );
	$objMsgM->setTo_uid ( $arrSpaceInfo ['uid'] );
	$objMsgM->setTo_username ( $arrSpaceInfo ['username'] );
	$objMsgM->setTitle ($title );
	$objMsgM->setContent ($content);
	$objMsgM->setOn_time ( time () );
	$objMsgM->create_keke_witkey_msg ();
	unset ( $objMsgM );
	kekezu::show_msg ( '已保存', 'index.php?do=user&view=message&op=outbox', NULL, NULL, 'ok' );
}else{
	$objUid and $intObjUid = intval($objUid);
	$arrObjInfo =  kekezu::get_user_info ( $intObjUid);
}
```
我们跟进 utftogbk() /lib/inc/keke_base_class.php
```
static function utftogbk($string) { 
		$string = self::charset_encode ( "utf-8", "gbk", $string );
		return $string;
	}
```
继续 
```
static function charset_encode($_input_charset, $_output_charset, $input) {
		$output = "";
		$string = $input;
		if (is_array ( $input )) {
			$key = array_keys ( $string );
			$size = sizeof ( $key );
			for($i = 0; $i < $size; $i ++) {
				$string [$key [$i]] = self::charset_encode ( $_input_charset, $_output_charset, $string [$key [$i]] );
			}
			return $string;
		} else {
			if (! isset ( $_output_charset ))
				$_output_charset = $_input_charset;
			if ($_input_charset == $_output_charset || $input == null) {
				$output = $input;
			} elseif (function_exists ( "mb_convert_encoding" )) {
				$output = mb_convert_encoding ( $input, $_output_charset, $_input_charset );
			} elseif (function_exists ( "iconv" )) {
				$output = iconv ( $_input_charset, $_output_charset, $input );
			} else
				die ( "sorry, you have no libs support for charset change." );
			return $output;
		}
	}
```
iconv()函数,哈哈  
我们随便注册个账号登陆 
进入发消息界面  这里我们需要把发消息的对象填正确 下面的标题,内容随便你选哪个,我这里方便闭合,选择内容
对象 admin(默认存在) 标题 111111 内容 123錦'and sleep(1),123)#   这里必须用#注释,%23是无效的
[<img src="https://images.seebug.org/upload/201510/1720360312fdd180217d5d38aebae98fa16c051d.png" alt="QQ截图20151017183604.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201510/1720360312fdd180217d5d38aebae98fa16c051d.png)
[<img src="https://images.seebug.org/upload/201510/172036204066fe88c01519883a58bafd4bc816fd.png" alt="QQ截图20151017183434.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201510/172036204066fe88c01519883a58bafd4bc816fd.png)
成功 sleep()
 
                      
                       
                    
                  
                
              
             
        
          
暂无评论