码迷,mamicode.com
首页 > 数据库 > 详细

SQL注入绕过登录验证

时间:2019-06-15 20:37:16      阅读:371      评论:0      收藏:0      [点我收藏+]

标签:密码   遇到   sql注入   判断   系统   信息   语句   报错   查询   

最近测试发现一个登录处的SQL注入,不用密码即可登录系统。
首先在登录处输入“111‘”,出现报错页面如图:判断可能存在注入
技术图片
进一步利用万能用户名测试admin‘ or ‘1‘=‘1,不用输密码成功登录。
分析一下这个payload:
从报错信息可以看出查询语句是:

select * from  xxxx where username=‘ ‘ and pwd=‘ ‘

当我们输入payload之后就变成如下:

select * from  xxxx where username=‘ admin‘ or ‘1‘=‘1‘ and pwd=‘ ‘

这个查询语句执行之后的结果就是:username=‘admin‘ 是true(系统存在这个用户名),‘1‘=‘1‘是true(后面发现这里是否为true也不重要),pwd=‘‘是false。
true or true and false,由于and的优先级高于or,先运算true and false结果是false,再运算true or false结果是true(or运算:所有参数中的任意一个逻辑值为真时即返回TRUE(真))所以登录成功。
然后我利用sqlmap跑了一下,发现必须把admin加上才能成功,如果不加是跑不出来的,如图:
技术图片
技术图片
感觉这样的话,需要知道一个正确得用户名才行,还是有一定得局限性,我利用别的万能账户都不行,比如‘or ‘1‘=‘1--直接提示用户名密码错误,‘or ‘1‘=‘1‘--又会出现错误信息。
之前也有遇到注入的参数必须有值才可以进行注入想必和页面返回有关系?

SQL注入绕过登录验证

标签:密码   遇到   sql注入   判断   系统   信息   语句   报错   查询   

原文地址:https://blog.51cto.com/13539934/2409532

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!