鲁迅曾经说过:“有数据库的地方就有sql注入。" 最近也是在一直在牛牛上看各个公司的以往校园招聘的笔试和面试题目,发现这样一道有意思的问题:mysql5.0和5.0以下的版本有什么区别?我发现这个问题看是简单,但是里面包含的门道却是很多。

 答:mysql5.0以及5.0以上的版本都存在一个系统自带的系统数据库,叫做:information_schema,而5.0以下的版本不存。information_schema下面又包含了这几张表:schemata、tables、columns。这三张表依次分别存放着字段:(schema_name)、(table_name、table_schema)、(table_schema、table_name、column_name),其次就是5.0以上都是多用户,5.0以下是单用户。

总结起来就是如下的图:

那么在平时的sql的注入漏洞挖掘中,一旦判断出数据库的版本(如下图),我们就可以使用information_schema这张数据库来进行相应信息爆破,如获取表名、获取某一个表中的列名、表中的列中的数据。

某公司的网站存在sql注入,数据库版本5.7.25

然而对于5.0以下的mysql,我们只能采用暴力破解的方式来爆破表名、字段名。十分繁琐。然而现在市面中基本上很多的数据库都是5.0以上的版本(本人挖洞亲身经验)。所以大可放心。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐