抽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 Scanner 的 HTTP Editor 和 HTTP Sniffer 完成。
由于 uchome 延续了 discuz 的一些安全措施,提交请求都验证了 formhash ,我们需要 formhash 构造请求,用 HTTP Sniffer 抓到个人设置页面的请求包,直接右键编辑这个包。
根据代码的上下文分析,我们需要构造
请求 URL : cp.php?ac=profile&op=info
请求参数 profilesubmit formhash info
满足这些变量和条件后就能进入程序的 SQL 注入漏洞代码段
from:RAyh4c的黑盒子
mysql暴错注入的科普 2 http://HdhCmsTest2cto测试数据/Article/201108/100723.html mysql暴错注入的科普 3 http://HdhCmsTest2cto测试数据/Article/201108/100724.html
查看更多关于mysql暴错注入的科普 1 - 网站安全 - 自学php的详细内容...