這篇文章主要為大家詳細(xì)介紹了[轉(zhuǎn)載]Discuz x3.2前臺(tái)GET型SQL注入裂痕,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,有需要的朋友可以收藏方便以后借鑒。 前臺(tái)非盲注,只需要共同一個(gè)xss,就能消除雞肋了。
信pandas,得長(zhǎng)生,緊抱doggy哥大腿!
/source/include/misc/misc_stat.php 46行:
if(!empty($_GET['xml'])) {
$xaxis = '';
$graph = array();
$count = 1;
$begin = dgmdate($beginunixstr, 'Ymd');
$end = dgmdate($endunixstr, 'Ymd');
$field = '*';
if(!empty($_GET['merge'])) {
if(empty($_GET['types'])) {
$_GET['types'] = array_merge($cols['login'], $cols['forum'], $cols['tgroup'], $cols['home'], $cols['space']);
}
$field = 'daytime,`'.implode('`+`', $_GET['types']).'` AS statistic';
$type = 'statistic';
}
foreach(C::t('common_stat')->fetch_all($begin, $end, $field) as $value) {
$xaxis .= "<value xid='$count'>".substr($value['daytime'], 4, 4)."</value>";
if($type == 'all') {
foreach ($cols as $ck => $cvs) {
if($ck == 'login') {
$graph['login'] .= "<value xid='$count'>$value[login]</value>";
$graph['register'] .= "<value xid='$count'>$value[register]</value>";
} else {
$num = 0;
foreach ($cvs as $cvk) {
$num = $value[$cvk] + $num;
}
$graph[$ck] .= "<value xid='$count'>".$num."</value>";
}
}
} else {
//var_dump($value);exit;
if(empty($_GET['types']) || !empty($_GET['merge'])) {
$graph[$type] .= "<value xid='$count'>".$value[$type]."</value>";
} else {
foreach($_GET['types'] as $t) {
$graph[$t] .= "<value xid='$count'>".$value[$t]."</value>";
}
}
}
$count++;
}
$xml = '';
$xml .= '<'."?xml version="1.0" encoding="utf-8"?>";
$xml .= '<chart><xaxis>';
$xml .= $xaxis;
$xml .= "</xaxis><graphs>";
$count = 0;
foreach ($graph as $key => $value) {
$xml .= "<graph gid='$count' title='".diconv(lang('spacecp', "do_stat_$key"), CHARSET, 'utf8')."'>";
$xml .= $value;
$xml .= '</graph>';
$count++;
}
$xml .= '</graphs></chart>';
@header("Expires: -1");
@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);
@header("Pragma: no-cache");
@header("Content-type: application/xml; charset=utf-8");
echo $xml;
exit();
}
見(jiàn)這一句:$field = 'daytime,`'.implode('`+`', $_GET['types']).'` AS statistic';
將$_GET['type']數(shù)組直接用`+`支解,并沒(méi)有過(guò)濾。
因?yàn)槲恢迷?field的處所,并不在單引號(hào)中,所以不消引入單引號(hào),也無(wú)需思量addslashes。
此刻碰著另一個(gè)問(wèn)題,怎么繞過(guò)discuz3.2的WAF?
不繞過(guò)也沒(méi)法出數(shù)據(jù)。
我們先看看輸出點(diǎn)在那里:http://localhost/bbs/misc.php?mod=stat&op=trend&xml=1&merge=1&types[1]=x

也就是說(shuō)我們可以節(jié)制的部門(mén)有許多。
且不看全局防注入源碼,黑盒試一下我發(fā)明一旦呈現(xiàn)'、(就會(huì)攔截,并且注釋符(#、--)也會(huì)攔截。
括號(hào)不能有,就出格拙計(jì),因?yàn)樵S多盲注需要括號(hào),子查詢也需要括號(hào),函數(shù)也需要括號(hào),這里都不能用了。
SELECT daytime,`aaa` AS statistic FROM common_stat WHERE daytime>=20140805 AND daytime<=20140904 ORDER BY daytime
我們?cè)倏瓷鲜鰏ql語(yǔ)句,發(fā)明我們可控的部門(mén)前面,尚有個(gè)daytime。這就愁壞我了,因?yàn)槲乙樵兊谋硎怯脩舯恚脩舯砘A(chǔ)沒(méi)這個(gè)字段。

執(zhí)行會(huì)提示Unknown column 'daytime' in 'field list'。
所以,我們可以操作mysql的特性,一次查詢兩個(gè)表,將pre_ucenter_members的數(shù)據(jù)連帶著查詢出來(lái):

各人可以看到,已經(jīng)不報(bào)錯(cuò)了。因?yàn)閜re_common_statuser表中存在`daytime`這個(gè)列。并且這個(gè)表中也有uid這個(gè)列,正好可以作為pre_ucenter_members的篩選項(xiàng)。
那么,有的同學(xué)再問(wèn),sql語(yǔ)句后半部門(mén)
` AS statistic FROM common_stat WHERE daytime>=20140805 AND daytime<=20140904 ORDER BY daytime
沒(méi)有注釋符怎么處理懲罰?
以上就是[轉(zhuǎn)載]Discuz x3.2前臺(tái)GET型SQL注入裂痕的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)和解決疑問(wèn)有所幫助,也希望大家多多支持武林網(wǎng)。