T00ls元旦献礼之一:PhpMyWind SQL Injection 0day
据不完全统计,每到跨年之时就是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);//这里才进入数据库查询
绕过的方法类似dede注射,大牛们肯定都懂的。
给一个关键词吧:inurl:member.php?c=reg
基本都是企业站,找了个百家乐注射看看:
Username:la608
Password:40987d69794befb65c30d30aee6d8489
放一个exp
谷歌批量的exp就不发了,最后祝大家新年快乐,好好活着!
评论52次
顶!!!!!!!!!!
没错节日 都有大牛出来分享,碉堡了
新年快乐!!
看来都要快乐了
新年快乐!!!
新年快乐!!!
哈哈,新年快乐
楼主犀利啊,收下。
收下,学xi一下
好厉害的说
抛砖引玉 收下了
顶下 明天如果有空我也来发一个 庆祝下 哈哈