### 简要描述:
代码审计之SQL注入,针对这个严谨的厂商,有注入绝不能忍啊,必须是高啊。而且其他都做了addsalsh ,这个是漏的
### 详细说明:
问题出在register.php文件中
先说fuzz时候是怎么发现的
注册用户的时候发现在第二次注册会给出提醒
alert('注册失败,该IP地址已经使用超过了1次');
于是想着用XFF能不能绕过,果断添加X-Forwarded-For字段,就绕过了
然后在X-Forwarded-For这里,修改ip地址为1.1.1.1' and 1=1等等,
测试均成功,由此判断这里肯定是个注入,只不过是个盲注,在外面测试不太方便就没跑库
于是去看源码
关键代码
if($mix['is_prevent_reg']){
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//直接从客户端获取ip
$myIp = $_SERVER['HTTP_CLIENT_IP'];
else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//从xff字段里直接获取
$myIp = $_SERVER['HTTP_X_FORWARDED_FOR'];
else
$myIp = $_SERVER['REMOTE_ADDR'];
$sql = "select * from " . $config['db_prefix'] . "user where ip_addr='" . $myIp . "'";
//这里直接拼接到sql语句中,造成注入,后面看到是没有回显的,是个盲注
$result = mysql_query($sql);
$num = mysql_num_rows($result);
if($num >= $mix['prevent_reg_num']){
echo "<script>alert('注册失败,此IP地址已经使用超过 ".$mix['prevent_reg_num']." 次了');</script>";
echo "<script>window.parent.location.href='" . url_site . "';</script>";
exit;
}
}
### 漏洞证明:
问题出在register.php文件中
先说fuzz时候是怎么发现的
注册用户的时候发现在第二次注册会给出提醒
alert('注册失败,该IP地址已经使用超过了1次');
于是想着用XFF能不能绕过,果断添加X-Forwarded-For字段,就绕过了
然后在X-Forwarded-For这里,修改ip地址为1.1.1.1' and 1=1等等,
测试均成功,由此判断这里肯定是个注入,只不过是个盲注,在外面测试不太方便就没跑库
于是去看源码
关键代码
if($mix['is_prevent_reg']){
if (!empty($_SERVER['HTTP_CLIENT_IP']))
//直接从客户端获取ip
$myIp = $_SERVER['HTTP_CLIENT_IP'];
else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
//从xff字段里直接获取
$myIp = $_SERVER['HTTP_X_FORWARDED_FOR'];
else
$myIp = $_SERVER['REMOTE_ADDR'];
$sql = "select * from " . $config['db_prefix'] . "user where ip_addr='" . $myIp . "'";
//这里直接拼接到sql语句中,造成注入,后面看到是没有回显的,是个盲注
$result = mysql_query($sql);
$num = mysql_num_rows($result);
if($num >= $mix['prevent_reg_num']){
echo "<script>alert('注册失败,此IP地址已经使用超过 ".$mix['prevent_reg_num']." 次了');</script>";
echo "<script>window.parent.location.href='" . url_site . "';</script>";
exit;
}
}
暂无评论