你的位置:聚盟网 >> 网络学院 >> 入门 >> 详细内容 在线投稿

mysql暴错注入的科普 1

www.juoooo.com  2011年9月22日22:59  来源: 互联网   查看:   我要评论(0)  收藏  字号: TTT

抽uchome两个老的SQL注入漏洞举例,漏洞很久以前就被人公布过了,两个SQL注入都在个人资料更新的流程里:

 

注册变量的代码KEY的内容直接进入了$inserts数组

foreach ($_POST['friend'] as $key => $value) {

$value = intval($value);

$inserts[] = "('base','$key','$space[uid]','$value')";

}

直接进入INSERT语句的VALUES

if($inserts) {

$_SGLOBAL['db']->query("DELETE FROM ".tname('spaceinfo')." WHERE uid='$space[uid]' AND type='base'");

$_SGLOBAL['db']->query("INSERT INTO ".tname('spaceinfo')." (type,subtype,uid,friend)

                            VALUES ".implode(',', $inserts));

 

……………..

 

注册变量的代码KEY的内容直接进入了$inserts数组

foreach ($_POST['info'] as $key => $value) {

$value = getstr($value, 500, 1, 1);

$friend = intval($_POST['info_friend'][$key]);

$inserts[] = "('$space[uid]','info','$key','$value','$friend')";

}

直接进入INSERT语句的VALUES

if($inserts) {

$_SGLOBAL['db']->query("DELETE FROM ".tname('spaceinfo')." WHERE uid='$space[uid]' $_SGLOBAL['db']->query("INSERT INTO ".tname('spaceinfo')."

                            (uid,type,subtype,title,friend)

                            VALUES ".implode(',', $inserts));

 

 

分析代码后可以发现,这里是两个INSERT类型的SQL注入,$key注册的变量可以构造SQL语句注入,但是这里会受GPC影响,不过一些PHP低版本的$_POST等超级全局变量的KEY不受GPC影响。

 

这里我使用Acunetix Web Vulnerability ScannerHTTP EditorHTTP Sniffer完成。

 

 由于uchome延续了discuz的一些安全措施,提交请求都验证了formhash,我们需要formhash构造请求,用HTTP Sniffer抓到个人设置页面的请求包,直接右键编辑这个包。

根据代码的上下文分析,我们需要构造

请求URLcp.php?ac=profile&op=info

请求参数profilesubmit formhash info

 满足这些变量和条件后就能进入程序的SQL注入漏洞代码段

编辑: 伊小露
分享到:
顶:91 踩:112
【已经有508人表态】
70票
超赞
67票
震惊
61票
不解
57票
愤怒
70票
支持
67票
高兴
53票
无聊
63票
杯具
发表评论

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】
糗事吧 牛吧 私房话 经典吧
祝福墙许愿墙
随手记-天天记帐本
邀请达人
2013祝福短信,节日祝福语