sqli-labs(六)

第十一关:

这关是一个登陆口,也是一个sql注入的漏洞,也就是常说的万能密码。

在输入框账号密码种分别输入 1'  和1'  页面会报错。

sqli-labs(六)

后台使用的单引符号进行的拼接。账号输入1' or '1'='1   密码输入 1' or '1'='1

sqli-labs(六)

其实输入任意账号  密码输入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

sqli-labs(六)

-------------------------------------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------

上面说了本来想用盲注的,但是总是不成功。于是我就想文件中的报错语句注释后使用sqlmap跑了一次(这个时候应该是不存在上面所说的报错注入了)

sqli-labs(六)

使用sqlmap跑了一次,发现还是能抛出注入漏洞,如下图:

sqli-labs(六)

好吧!联合注入,第一关的类容。。。。。说明我们还是得灵活运用才行啊。。。

如下图:查询得信息会在用户信息中显示出来

sqli-labs(六)

第十二关:

输入' 和" 页面都没有任何变化,这里有点意思的是如果后台是'''(三个单引号),sql执行会报错,但如果是"""(三个双引号),sql执行却不会报错。如下图

sqli-labs(六)

所以这个时候我们最好输入'"(一个单元符号一个双引符号),来让程序报错从而判断后来sql是怎么进行拼凑的(如果有报错信息的话)

sqli-labs(六)

可以看到这里应该使用双引符号,然后再加上括号的形式。

后面就好办了,post数据输入uname=1") or 1=1 #&passwd=1&submit=Submit

成功登陆,后面的操作就和十一关一样了

sqli-labs(六)

上一篇:命令行执行php脚本 中$argv和$argc


下一篇:Palindrome Partitioning II