前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql注入高级篇1--内置系统表注入

mysql注入高级篇1--内置系统表注入

作者头像
lonelyvaf
发布2018-06-07 14:54:16
1.2K0
发布2018-06-07 14:54:16
举报

团队纳新了,为了让小鲜肉们有素材,我写了一些基础的东西。大神勿喷.....

mysql> select database();

+--------------------+

| database() |

+--------------------+

| information_schema |

+--------------------+

1 row in set (0.00 sec)

我当前选中的是information_schema

mysql> show tables;

+---------------------------------------+

| Tables_in_information_schema |

+---------------------------------------+

| CHARACTER_SETS |

| COLLATIONS |

| COLLATION_CHARACTER_SET_APPLICABILITY |

| COLUMNS |

| COLUMN_PRIVILEGES

.

.(此处省略N个)

+---------------------------------------+

40 rows in set (0.00 sec)

这边我们看到它有很多个表。

其中保存着关于MySQL的服务器所维护的所有其他数据库的信息。所有数据库名的信息、数据库的表的信息、数据库列的信息等。常用的information_schema数据库表说明:

  • SCHEMATA表--------------提供当前mysql实例中所有数据库信息
  • TABLES表-----------------提供了关于数据库中的表的信息
  • COLUMNS表---------------提供了表中的列信息。
  • SCHEMATA

所有mysql数据库信息都在里面,我们选择一列显示出来。

Ok,我们看看他有几个表

这里我们主要关注SCHEMA_NAME这个列,因为这个列储存这所有的数据库名。

其他的列对我们的注入帮助不是这么大。

执行语句:select SCHEMA_NAME frominformation_schema.SCHEMATA;

获得所有的数据库名字。

  • TABLES表

这个表大家一看名字就知道了,肯定是和mysql所有的表名相关的一个表。

选择相应的一行显示。

同理,TABLES表我们只要关注TABLE_NAME(表名)、table_schema(表所属的数据库)这两个列就ok了。

select TABLE_NAME frominformation_schema.TABLES;

这就爆出了我们所有数据库的表

这里介绍一个函数,GROUP_CONCAT函数返回一个字符串结果,该结果由分组中的值连接组合而成。

我们可以构造语句:select group_concat(TABLE_NAME) from information_schema.TABLES;

这样我们返回的结果就会呈字符串返回,但是一个缺点是列名不能显示全。

假设我们猜测管理员的数据库在vaf。

那么我们可以构造语句:

mysql> select group_concat(table_name)from information_schema.tables where tabl

e_schema=’vaf’;

或者:

mysql> select group_concat(table_name) frominformation_schema.tables where tabl

e_schema=0x766166;

这个是十六进制vaf的值,为什么用16进制呢?有时候单引号会被过滤,转成HEX可以更方便的进行注入~

Ok,这样这个库的所有表的名字就都出来了。

  • COLUMNS表

这个就同样的套路了。

select SCHEMA_NAME frominformation_schema.COLUMNS limit 1,1;

到了这个表里,完全可以看到,库名,表名,列名对应的列都出来了。

Ok,我们继续构造语句:

mysql> select COLUMN_NAMEfrom information_schema.COLUMNS where TABLE_NAME='injection';

剩下来怎么注入拿到列名的数据我就不多说了~~哈哈哈哈.

这样注入手法很灵活的。突破了 limit 限制了。(group_concat)

有时候一些用户不能跨库查询的,所以在进行上述的一些列操作的时候,记住判断一下当前的用户。

select user from mysql.user

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 晨星先生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档