你的个人信息是如何被盗走的?MySQL脱库,脱库的原理,怎么脱库,脱库的步骤,一库三表六字段

「作者主页」:士别三日wyx
「作者简介」:CSDN top200、阿里云博客专家、华为云享专家、网络安全领域优质创作者

一、什么是脱库

「脱库」是指,利用网站的漏洞,获取数据库中的全部用户信息。

比如某银行数据泄露,泄露的信息包括名字、性别、卡号、身份证号、手机号码 、所在城市、联系地址、工作单位、邮编 、工作电话、住宅电话、卡种、发卡行等等。

我们平时接到的诈骗电话,对方知晓我们所有的个人信息,他们的信息来源可能就是某网站的数据泄露;当然,并不是所有的诈骗电话都是源于数据泄露,比如 我……秦始皇……打钱!

脱库有一个前提,那就是网站存在SQL注入漏洞。

我们举个栗子,你暗恋你们校花很久了,这天,你发现你们学校官网存在SQL注入漏洞,你想从你们学校的数据库中查到校花的个人信息,但你不知道个人信息保存在哪个表中,你甚至不知道这个数据库中都有哪些表,这时候你该怎么办?

不要担心,接下来,我将一步一步的教你,如何拿到这些数据!

二、默认数据库

首先,我们先来认识一下MySQL的「默认数据库」,如下图:
在这里插入图片描述
MySQL初始安装时,会携带一些默认的数据库,这些数据库用来存储MySQL的相关信息:

  1. information_schema:保存具体数据库的信息,比如MySQL有哪些数据库,库里有哪些表,表里有哪些字段。
  2. mysql:保存数据库的权限信息,比如哪个用户可以访问哪个表。
  3. performance_schema:保存数据库的性能参数。
  4. sys:数据源自performance_schema,目的在于降低数据库的复杂度。

对我们来说,比较重要的有两个数据库:information_schema、mysql。

三、一库三表六字段

这里给大家普及一个非常重要的概念:「一库三表六字段」
顾名思义,就是一个数据库、三个表、六个字段。

「一库」是指 information_schema 库,这个库是脱库的核心库。
为什么叫它核心库呢?因为它里面有三个非常重要的表。

「三表」是指 information_schema 库里的三个表:

  1. schemata 表:存放所有数据库信息
  2. tables 表:存放所有表信息
  3. columns 表:存放所有字段信息

「六字段」是指 三表中的六个关键字段:

  1. schemata表的 schema_name 字段:存放具体的数据库名
  2. tables表的 table_name 字段:存放具体的表名
  3. tables表的 table_schema 字段:存放表所在的数据库
  4. columns表的 column_name 字段:存放具体的字段名
  5. columns表的 table_name 字段:存放字段所在的表名
  6. columns表的 table_schema 字段:存放字段所在的数据库名

为了方便记忆,我们把它整理成脑图:
在这里插入图片描述
这是个概念性的东西,建议大家牢牢记住,接下来我们来讲解一下脱库的具体步骤。

四、脱库步骤

脱库总共分三步:

  1. 爆库
  2. 爆表
  3. 爆字段

1)爆库

回到文章开头的问题,我们想要查询校花的个人信息,首先得知道这些个人信息存放在哪个数据库吧。
如果我们知道了网站中所有的数据库名字的话,能不能根据库名来判断哪个数据库是存放个人信息的呢?
这个爆破MySQL所有数据库名字的操作,就叫「爆库」

information_schema 库的 schemata 表的 schema_name 字段存放了所有数据库的名字,我们查询这个表,就能拿到所有库名:

select schema_name from information_schema.schemata;

从下图的查询结果中可以看到,我们查到了所有的库名,其中有个叫 user 的数据库,初步判断这个库用来保存用户信息。
在这里插入图片描述

2)爆表

确定数据库以后,我们肯定要知道这个库里面有哪些表。
获取数据库中所有表名的操作,就叫「爆表」

information_schema 库的 tables 表的 table_name 和 table_schema 字段分别保存表名和表所在的库名,我们查询这个表,就能拿到数据库中的所有表名:

select table_name from information_schema.tables where table_schema = 'user';

如图,我们拿到了 user 库中的所有表名。
在这里插入图片描述

3)爆字段

实际上,拿到表名后,我们就可以查询表中的数据了,但实际注入中,由于一些原因,比如联合查询只能查询固定个数的字段,这时候我们就需要知道表中有哪些字段。

information_schema 库的 columns 表的 column_name、table_name、table_schema 字段分别保存字段名、字段所在表名、字段所在的库名,查询这个表,我们就能拿到表中的所有字段名:

select column_name from information_schema.columns where table_name = 'student' and table_schema = 'user';

如图,我们拿到了表中的所有字段名。
在这里插入图片描述

4)爆数据

现在库名、表名、字段名我们都知道了。
接下来,我们就可以查询网站数据库中的所有用户信息了,比如,看一下校花的家在哪:

select address from user.student;

在这里插入图片描述
感谢你的点赞、收藏、评论,我是三日,祝你幸福!

转载于:https://blog.csdn.net/wangyuxiang946/article/details/123027484 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值