T00ls元旦献礼之一:PhpMyWind SQL Injection 0day

2013-12-31 20:58:58 52 6580


据不完全统计,每到跨年之时就是t00ls各大潜水巨牛发0day之日,在此我先抛个砖。

SQL注射1:
member.php line:686
//确认收货
else if($a == 'getgoods')
{
        $r = $dosql->GetOne("SELECT `checkinfo` FROM `#@__goodsorder` WHERE `username`='$c_uname' AND `id`=$id");//注意此处id未初始化,跟踪GetOne方法
        $checkinfo = explode(',',$r['checkinfo']);

        if(!in_array('getgoods', $checkinfo))
        {
                $checkinfo = $r['checkinfo'].',getgoods';
        }

        $dosql->ExecNoneQuery("UPDATE `#@__goodsorder` SET checkinfo='$checkinfo' WHERE `username`='$c_uname' AND `id`=$id");
        header('location:?c=ordershow&id='.$id);
        exit();
}

mysql_class.php line:252

function GetOne($sql='',$acctype=MYSQL_ASSOC)
{
    ...
    if(!empty($sql))
    {//下面这步是在我们的exp中搜索limit,若存在则替换表前缀
        if(!preg_match("/LIMIT/i", $sql)) $this->SetQuery(preg_replace("/[,;]$/i", '', trim($sql))." LIMIT 0,1;");
        else $this->SetQuery($sql);//到这一步就ok了
    }
    else
    {
        return false;
    }

    $this->Execute($sql,'one');//执行了..造成注射,不过还得绕过内置的80sec防注入ids
    ...
}   
很明显的注入,会员中心还有好几处注入,就不一一列举了,留点给刷乌云的孩子们。
也许有黑阔说,人家注册会员都关闭了,那还搞个j8?那继续看下面的无需登录的注射

SQL注射2
shoppingcart.php 

//初始化参数
$a = isset($a) ? $a : '';

//添加购物车
if($a == 'addshopingcart')
{

//构成选中属性
if(isset($typeid))//同样未做过滤
{

    //获取商品属性
    $dosql->Execute("SELECT * FROM `#@__goodsattr` WHERE `goodsid`=$typeid");//上面的Execute方法没跟,这里跟一下吧
    if($dosql->GetTotalRow() > 0)
    ...
}  

function Execute($sql, $id='me')
{
    global $dosql;

    if($dosql->isclose)
    {
        $this->Open(false);
        $dosql->isclose = false;
    }

    if(!empty($sql))
    {
        $this->SetQuery($sql);
    }
    else
    {
        return false;
    }

    //SQL语句安全检查
    if($this->safecheck)
    {
        $this->CheckSql($this->querystring);  //这里CheckSql是80sec的防注入检测函数,就不继续跟了
    }
    $this->result[$id] = mysql_query($this->querystring, $this->linkid);//这里才进入数据库查询
通过以上的代码跟踪,注入是很明显的,但是得绕过80sec的内置防注入ids才行。
绕过的方法类似dede注射,大牛们肯定都懂的。

给一个关键词吧:inurl:member.php?c=reg  
基本都是企业站,找了个百家乐注射看看:

Username:la608
Password:40987d69794befb65c30d30aee6d8489



放一个exp
谷歌批量的exp就不发了,最后祝大家新年快乐,好好活着!

关于作者

M3loee8篇文章768篇回复

呵'呵

评论52次

要评论?请先  登录  或  注册