登陆一下好吗??【3思路】
时间:2018-06-14 00:58:18
来源:taozijun
浏览:(742)
(6)
登录一下好吗?
通过这道题提示下寄几:不是所有有关sql语句的注入都要报库名表名字段名!!!
首先打开这道题,是俩输入框,输入1和1有回显,输入union等字符会不显示,想着应该是回显注入
此时应自动脑补sql语句:select * from user where username = ’ ’ and password = ’ '(后经验证是这一个)
或者 select * from user where username = " " and password = " "
这时候想不开的我就开始想着如何单引号or各种爆库名表段字段…发现几乎想用的都被过滤了只剩下and,’,",=这些。。臣妾做不到用这些个构造sql语句。。后来翻看了WP后豁然开脑洞,以下介绍三种方法
1.通过构造0 = 0把where后面的语句构造出1 and 1的形式
具体做法:在两个提交框提交 aaa’=‘0 或 aaa’=’ (aaa可为任何username里没有的字符甚至为空)
这样做之后sql查询语句就变成 select * from user where username = ‘aaa’=‘0’ and password = ‘aaa’='0
或者 select * from user where username = 'aaa'='' and password ='aaa'=''
根据等号从前往后看的原则 username='aaa’显然是不存在的,因此返回0(也可以说是空),看下一个等号就是 0=0(空=空)
,0=0(空=空)为1。password同理,所以语句变为select * from user where 1 and 1,爆出全部数据。
2.通过构造username=0爆出全部数据
这里我们要知道,除了开头是非零数的字符串,其他字符串化成整型都为0,字符串=0 为真。
当所有username里没有开头是非零数的字符串,username=0相当于查全部数据.
所以我们构造 username=aaa’+0;%00
构成的sql语句为 select * from user where username = ‘aaa’+0;%00 ’ and password = ’ ’
因为–+,#,/**/等注释符都被过滤了,我们用%00,是一个截断符,相当于把后面的语句注释掉
username=‘aaa’+0 相当于 username=0,得到答案
(当构造username=a’+0+‘a&password=a’+0+'a时,只查询出一条语句,说明password里有开头是非零数的字符串)
3.通过构造异或语句(这个开脑洞)
先给出payload:username=&password=^'aaa
构成的语句是 select * from user where username = ’ ’ and password = '^‘aaa’
其中反斜杠把后面的单引号转义掉了(相当于一个普通的字符),所以’ ’ and password = '就是一串字符串,'aaa’也是一串字符串,字符串都为0,0⊕0=0,又构造出username=0了!!!!
评论