第三关的方法与前两关大同小异,区别就是一些很小的细节,这也体现了在进行漏洞攻击的时候渗透人员的工作和细心。那么我们来一起看一下,这个第三关是如何通过的吧!
首先,在我们进行注入的第一步就是查看报错回显,这里当我试着输单引号的时候,就提示出现报错了,而通过报错信息可以发现是以单引号和括号进行闭合的。
知道了闭合符号后,就可以使用order by进行字段查询,并且结尾要使用注释号注释后面的内容,不然会显示报错,通过一次次的查询后,发现字段数到达4的时候出现报错,那么就可以知道字段数为3了
知道了字段数后,就可以使用联合查询union,可以发现没有报错,并且具有回显
正常回显后,使用联合查询union查询数据库的版本信息和数据库库信息,正常回显后就可以知道数据库版本为5.7.26,数据库的库名为security
知道了数据库名后,我们就可以查询数据库中的所有表,使用下面的代码进行查询后就会发现,在这些表里面有一个users表,这里面极大可能有我们所想要的账号信息
?id=-1 union 1,database(),group_concat(table_name) from inforamtion_schema.tables where table_schema='securty'
接下来,我们进入users表进行查询,使用下面的代码,查询到表中含有username和password表,那么不出意外的话,这两个就是我们想要的账号表和密码表了
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'
使用sql代码查询username和password两张表,进入后就是账号和密码, 第三关通关!!!
?id=-1 union 1,2,select concat(username,0x3a,password) from users