关于sql注入的万能密码 - CDUSEC内部博客

关于sql注入的万能密码

分类栏目: WEB

32℃

jsonf 发布于 发表评论

一(都知道的  1' or '1'='1 或者 1' || '1'='1):

        这个原理就是通过逻辑绕过,比如:select * from flag where name='1' or '1'='1' and password='1' or '1'='1',or代表有一个为真就为真,and代表全真为真,这样就查询成功了:

2.png


二(1'='0):

        这里怎么理解呢?select * from flag where name='1'='0' and password='1'='0';先看前面 name='1'是错误的代表False也就是0,所以name='1'='0'为真,password也就一样的解释了:

4.png


三(1'<>'1 或者 1'!='1):

        select * from flag where name='1'<>'1' and password='1'<>'1';这里name='1'为假然后不等于一个不为0的数,假不等于真成立,这样name='1'<>'1'就为真,后面的password同理

5.png


四('*/*  */'):

            这个就是在用户名里面输入'*/*密码输入*/'这样就构成了:select * from flag where name=''*/* 'and password='*/'';就相当于select * from flag where name=''*'';因为/**/为注释符号,所以他们之间的就注释掉了,name=''为假,我个人理解*可以代表任意的一个符号,但是百度查不到这是呢,name=''*''这里*代表=的时候成立,因为name=''为假,而''代表假,所以name=''=''(假等于假)成立,查询出来的内容不全,如果name里面的字符开头是数字,就不会显示出来,但是作为万能密码并不影响。。。

6.png


五(' xor '1):

            这种应该少吧,因为既然有xor那么就有or,xor可以用^代替吗,这里不行,自己试一试就知道,select * from flag where name='' xor '1' and password='' xor '1';异或一真一假为真,所以name=''为假,'1'为真所以整体为真:

7.png

所以万能密码基于逻辑关系,多多尝试说不定又有什么新的万能密码。。。

  友情赞助
微信二维码
支付宝二维码
  选择分享方式

版权:若无特殊注明,本文皆为jsonf原创,转载请保留文章出处。

链接:关于sql注入的万能密码 - http://cdusec.happyhacking.top/?post=74