的Ucenterhome代码审核的SQL注入漏洞(需要GPC=关闭)

核心提示:SQL注入1:文件源 cp_profile.phpphp / / .......漏洞省略....... / /性别_post美元{性} = intval($ _p…

SQL注入1:

在源文件 cp_profile.php漏洞



<
…省略…

/性
_post美元{ 'sex} = intval($ _post { 'sex});
如果($ _post { 'sex}空($空间{ 'sex ' })){ } = 'sex setarr美元的美元'sex_post { };

foreach(profilefields美元美元美元价值=){
如果(美元价值{ 'formtype} = = 'select)价值{ 'maxsize} = 255;
setarr美元{ 'field_'。$场} = getstr($ _post { 'field_'。$场},{ 'maxsize美元价值的},1, 1);
如果(美元价值'required'} {空(美元setarr { 'field_'。$场})){
被('field_required ',' ',1,阵列(美元价值{标题}));
}
}

updatetable('spacefield,setarr美元,阵列('uid= > _sglobal美元{ 'supe_uid ' }));

隐私
$插入=数组();
foreach($ _post {朋友}键=美元的美元价值){
价值= intval(价值);
$inserts{} = ('base','$key','$space{uid}','$value'); / / this is why key did not filter 11 years has not been repaired
}
如果($插入){
_sglobal美元{ 'db} ->查询(删除。Tname('spaceinfo)。哪里的UID ={ }空间美元UID类型=);
_sglobal美元{ 'db} ->查询(插入。Tname('spaceinfo)。(型、型、UID、朋友)
值。崩溃($插入)','); / /解释…
}


SQL注入2:

我读了一遍,除了上面没有处理钥匙的感冒饭外,还有一个地方引起了注射:

漏洞文件 cp_privacy.php源



<
…省略…

} elseif(submitcheck('privacy2submit ')){

类型/筛选
{ } { $空间'privacy'filter_icon} =阵();
foreach($ _post { } { } 'privacy'filter_icon的美元价值的关键=){
{ } { $空间'privacy'filter_icon} { } = 1美元关键;
}
用户/组设置
{ } { $空间'privacy'filter_gid} =阵();
foreach($ _post { } { } 'privacy'filter_gid的美元价值的关键=){
{ } { $空间'privacy'filter_gid} { } =美元关键intval(价值);
}

通知/筛选
$space{'privacy'}{'filter_note'} = array ();
foreach($ _post { } { } 'privacy'filter_note的美元价值的关键=){ / /关键在这里开始至空间{ 'privacy'} { } { }美元'filter_note的关键
{ } { $空间'privacy'filter_note} { } = 1美元关键;
}

privacy_update();

更新缓存/朋友
friend_cache($ _sglobal { 'supe_uid});

被('do_success ','cp.phpac = privacyop =视图);
}

如果($ _get { } = =''op ' '){
朋友/团体/盾牌
filter_icons美元=空($空间{ 'privacy} { 'filter_icon ' })阵列($空间{ 'privacy} { 'filter_icon}); / /分配至filter_icons
filter_note美元=空($空间{ 'privacy} { 'filter_note ' })阵列():'privacy} { { $空间'filter_note};
iconnames =美元美元美元美元图标AppIds = = = =阵列的用户UID美元();

…省略…


foreach(filter_icons美元美元美元关键=值){

列表($图标,$ UID)=爆炸(|,美元关键); / /使用|分割分配关键至UID没有做任何过滤

$图标;

美元美元美元关键} = { UID UID; / /这里是写进$ UID没有过滤

如果(is_numeric($图标)){

{ } =关键AppIds美元美元美元图标;

}
}

如果($ UID){
美元美元'db_sglobal查询= { } ->查询(选择用户名,用户名从Tname(空间的)。在液(。Simplode($ UID)。 );铅球、铅球、铅球、铅球、铅球、铅球、铅球、铅球、铅球、铅球、铅球、铅球、铅球等。
_sglobal美元{ 'db} -> fetch_array($查询);
而(美元价值= { } _sglobal美元'db-> fetch_array($查询)){
为用户价值'uid{ } { } = { } 'username美元的价值;
}
}
获取应用程序名
如果($ AppIds){
美元美元'db_sglobal查询= { } ->查询(选择AppID,应用程序的名字从Tname('myapp)。在哪里AppID(。Simplode())))
而(美元价值= { } _sglobal美元'db-> fetch_array($查询)){
iconnames美元价值'appid{ } { } = { } 'appname美元的价值;
}
}

cat_actives美元=阵列('= >班=主动);

}


看simplode功能。



功能simplode($ IDS){
返回(。崩溃',' ',为IDS); / /。虽然有单引号,但程序不过滤过去的键值,所以在GPC =关闭的情况下可以被枪毙。
}




测试图:







注意,你必须登录并找到formhash-discuz 7.第一,和源在源代码中可以找到

作者:米