首页 > Web开发 > 详细

实验吧web登陆一下好吗

时间:2019-03-17 12:02:11      阅读:191      评论:0      收藏:0      [点我收藏+]

知识点:

万能密码‘=‘

 

一道登陆型的SQL注入题目,这种题目一般有四种题型:

1.在username中通过union联查select一个已知字符来与传递的password匹配完成登陆

2.使用万能密码登陆

3.通过SQL注入获取数据库中的账号密码然后登陆

4.通过SQL注入直接获取数据库中的flag

后台处理逻辑一般有两种:

1.同时使用两个字段值来查询数据库,错误回显一般是“用户名或密码错误”之类的统一报错

2.先使用username查询数据库得到password,再进行对比,错误回显一般是“用户名不存在”,“密码错误”之类的分开报错



首先直接试了一下万能密码

1‘ or ‘1‘=‘1           

1 or 1 = 1

 

技术分享图片

发现 or  被过滤了

换成大写,大小写混合都不行

还过滤了#   --   select等

没有被过滤的有    ‘     =  

猜解SQL语句

select xxx from xxx where username=‘‘ and password=‘‘

select ,,, from ,,, where username=‘xxx‘=‘ ‘and password=‘xxx‘=‘‘;这是一个永真的式子

 

方法二:

这里提一下另外一种解法,因为常用的or,||,union之类的关键词都被吃掉了的原因,这里使用的是异或字符^来进行确认的。

传入username=1\&password=^‘1,如果后台是第二种处理逻辑,那么SQL语句就会是:

select ??? from ??? where username=‘1\‘ and password=‘^‘1‘

通过转义符\转义username的第二个单引号,在SQL运算中,会先进行异或运算。此时username的值为1\‘ and password=,而这个字符串跟1相等,异或为0,所以最后的SQL语句为select ??? from ??? where username=0,而0会匹配所有第一个字符不为数字的字符串。

结果:

 

 
技术分享图片

通过转义符\转义username的第二个单引号,在SQL运算中,会先进行异或运算。此时username的值为1\‘ and password=,而这个字符串跟1相等,异或为0,所以最后的SQL语句为select ??? from ??? where username=0,而0会匹配所有第一个字符不为数字的字符串。
部分内容转自:https://www.jianshu.com/p/bc4a506ffebd,感谢分享

实验吧web登陆一下好吗

原文:https://www.cnblogs.com/liqik/p/10546132.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!