sqli-labs(六)
第十一关:
这关是一个登陆口,也是一个sql注入的漏洞,也就是常说的万能密码。
在输入框账号密码种分别输入 1' 和1' 页面会报错。
后台使用的单引符号进行的拼接。账号输入1' or '1'='1 密码输入 1' or '1'='1
其实输入任意账号 密码输入1' or '1'='1也可以进去。
这关是考验报错注入,其实我个人感觉应该是有盲注的,但是我使用1' or ascii(substr((select user()),1,1)>64 # 注入时会报错,目前不知道是什么原因。(补充:后来发现是可以盲注的,这里的语句写错了,少了一个右括号,应该是1' or ascii(substr((select user()),1,1))>64 # !!!! 好吧 ,手工就是容易出错)
这里还是先使用报错注入吧:
这里先介绍一下报错函数extractvalue(),在hackbar种输入输入如下
uname=1&passwd=1' and extractvalue(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1))) #&submit=Submit
-------------------------------------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------
上面说了本来想用盲注的,但是总是不成功。于是我就想文件中的报错语句注释后使用sqlmap跑了一次(这个时候应该是不存在上面所说的报错注入了)
使用sqlmap跑了一次,发现还是能抛出注入漏洞,如下图:
好吧!联合注入,第一关的类容。。。。。说明我们还是得灵活运用才行啊。。。
如下图:查询得信息会在用户信息中显示出来
第十二关:
输入' 和" 页面都没有任何变化,这里有点意思的是如果后台是'''(三个单引号),sql执行会报错,但如果是"""(三个双引号),sql执行却不会报错。如下图
所以这个时候我们最好输入'"(一个单元符号一个双引符号),来让程序报错从而判断后来sql是怎么进行拼凑的(如果有报错信息的话)
可以看到这里应该使用双引符号,然后再加上括号的形式。
后面就好办了,post数据输入uname=1") or 1=1 #&passwd=1&submit=Submit
成功登陆,后面的操作就和十一关一样了