关于sql永真式注入的理解

来源:互联网 发布:贷款那个软件好 编辑:程序博客网 时间:2024/06/07 22:49

sql永真式

所谓的永真式就是 or 1=1 看你怎么构造引号了
注意网页提示
地址http://104.128.238.41/sql1001/

 

 

所谓永真式就是  语句1 or 1=1    

                ↑上面语句意思是前面语句或者1=1为真 那么返回值为真   

 

那么接下来的语句构造就很好想了  select语句的格式是

$(这个字符代表一行开始 在控制台中有)sql = "SELECT * FROM *        WHERE usrname= '" . $inp_id . "' AND pwd = '" . $inp_pwd . "';";

 

由于你键入的有用户名 密码两个值登录的原理是获取你输入的信息,在mysql中查询对应的项,如果能找到则返回true(登陆成功),否则返回false(用户名或密码错误)

既然要登录, 那就要想办法让他返回true  在你不知道用户名和密码的情况下,就需要构造语句,达到欺骗服务器的效果(渗透的方法就是欺骗服务器,让它执行编程人员意料之外的命令)

 

了解了上面两条之后  语句构造应该就简单些了,因为不知道用户名密码,随便敲就是了,记得构造语句的时候要遵从语句的语法

构造语句:用户名: 1or 1=1 #(那个1写不写都可以)

   密码  : 1(写不写都可以)

下面来解释一下为什么要这样构造

语句构造完成之后,你点登录服务器执行的语句就是sql = SELECT * FROM *        WHERE usrname= ‘1or 1=1 # AND pwd = ‘1;  

服务器获取的信息有:  SELECT * FROM *        WHERE usrname= ‘1or 1=1  #这个符号在sql语句中代表注释符,即#后的语句被注释掉了) 因为select语句或者1=1有一个为真,整个语句就为真(很明显1=1是真),所以一定能进去

0 0