SQL注入绕过登录验证

  

最近测试发现一个登录处的SQL注入,不用密码即可登录系统。
首先在登录处输入“111”,出现报错页面如图:判断可能存在注入
 SQL注入绕过登录验证”> <br/>进一步利用万能用户名测试管理”或“1 '=' 1,不用输密码成功登录。<br/>分析一下这个有效载荷:<br/>从报错信息可以看出查询语句是:</p>
  <pre> <代码> select *从xxxx用户名=' '和pwd=' ' </代码> </pre>
  <p>当我们输入负载之后就变成如下:</p>
  <pre> <代码> select *从xxxx用户名=癮dmin”或' 1 '=' 1 '和pwd=' ' </代码> </pre>
  <p>这个查询语句执行之后的结果就是:用户名='管理'是真的(系统存在这个用户名),' 1 '=' 1 '是真的(后面发现这里是否为真也不重要),pwd=真是真假,由于和的优先级高于,或者先运算真与假结果是假的,再运算真或假结果是真实(或运算:所有参数中的任意一个逻辑值为真时即返回真正的(真))所以登录成功。
然后我利用sqlmap跑了一下,发现必须把管理加上才能成功,如果不加是跑不出来的,如图:
 SQL注入绕过登录验证”> <br/> <img src=SQL注入绕过登录验证