关闭

seacms sql注入

标签: 代码审计
2554人阅读 评论(1) 收藏 举报
最近在代码审计,审到一个注入,提交,说重复了,好尴尬啊。
源码下载:http://www.mycodes.net/47/7976.htm
在/i.php,获取ip的时候,全局的ip获取是做了正则。不知道问什么这里重新进行了一次ip的获取。
<?php
session_start();
require_once("include/common.php");
require_once(sea_INC."/main.class.php");

$i=file_get_contents("data/admin/i.txt");
if($i==0){showmsg('系统已经关闭积分推广系统', 'index.php');exit;}

$u=addslashes($_GET['uid']);
if(empty($u) OR !is_numeric($u)){showmsg('无法获取目标用户ID', 'index.php');exit;}

function get_client_ip() { 
    if(getenv('HTTP_CLIENT_IP')){ 
        $client_ip = getenv('HTTP_CLIENT_IP'); 
    } elseif(getenv('HTTP_X_FORWARDED_FOR')) { 
        $client_ip = getenv('HTTP_X_FORWARDED_FOR'); 
    } elseif(getenv('REMOTE_ADDR')) {
        $client_ip = getenv('REMOTE_ADDR'); 
    } else {
        $client_ip = $_SERVER['REMOTE_ADDR'];
    } 
    return $client_ip; 
} 
$bip = get_client_ip(); 

$row = $dsql->GetOne("Select * from sea_ie where ip='$bip'");
//print_r($row);
if(!is_array($row))
{
	$dsql->ExecuteNoneQuery("insert into sea_ie values('','$bip',NOW())");
	$sql="Update sea_member set points = points+$i where id=$u";
	$dsql->ExecuteNoneQuery("$sql");
	showmsg('感谢您的支持,现在将自动跳转到首页', 'index.php');exit;
}

$i 的值通过查看/data/admin/i.txt。$i=2;所以积分推广系统没有关闭,继续执行下面的代码:
可以看到

$bip = get_client_ip(); 

$row = $dsql->GetOne("Select * from sea_ie where ip='$bip'");
//print_r($row);
if(!is_array($row))
{
	$dsql->ExecuteNoneQuery("insert into sea_ie values('','$bip',NOW())");
	$sql="Update sea_member set points = points+$i where id=$u";
	$dsql->ExecuteNoneQuery("$sql");
	showmsg('感谢您的支持,现在将自动跳转到首页', 'index.php');exit;
}

$bip没有过滤就已经查询和入库了,所以造成注入,这里要对$uid进行了赋值,结果如下:




1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:96780次
    • 积分:560
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:0篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论