今天,我将通过这篇文章来一步一步教会大家如何进行MSSQL Union注入。在这篇文章中,我只会对相关的基础知识内容进行讲解。因为我发现在网上目前没有很多相关的教程,而且目前已有的教程中也并没有讲解得非常详细,所以我决定利用我多年的MS SQL注入经验,来给大家提供这样的一份基础教程,希望这篇教程可以给大家带来帮助。
首先,我们需要了解与注入有关的一些基础知识,其中就包括如何找出注入类型,如何进行数据库测试,以及如何找到与其它数据库表中相同的列。所以,我建议大家在阅读本教程之前,先去了解一些相关的基础知识,否则你可能会在阅读这篇教程的过程中遇到一定的困难。首先,我们不得不介绍一下什么是MSSQL。MSSQL是指微软的SQLServer数据库服务器,它是一个数据库平台,它可以为用户提供数据库的从服务器到终端的完整的解决方案。其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库。
那么,让我们开始吧………..
首先,MSSQL的代码检测部分与MySQL的是一样的,首先输入一个单引号(编码格式为%27),然后再输入一个双引号(编码格式为%22)来进行错误检测。接下来,我们将主要对基于单引号的注入方式进行讲解。
当我们发现,无论我们使用双引号还是单引号,系统都会给我们提供错误信息,那么其注入类型极有可能为基于整数的SQL注入。因为如果注入基于单引号的话,当我们使用双引号时,系统是不会提示错误信息的。如果注入基于双引号的话,同理可得,在我们使用单引号时,系统同样是不会提示错误信息的。所以我们就可以得出这样的一个结论,当我们使用双引号和单引号时,系统均会向我们提供错误信息的话,我们就可以采用黄金准则,即注入类型为整数类型(integer type)。
现在,让我们来对查询语句进行分析
从上面给出的这段示例代码中,我们可以了解到,表中数据列的总数为5。
现在,我们可以继续使用“order by”来进行查询。最后我们发现,“5”是最后一个有效数据列。接下来,我们要使用union select语句来进行操作。
如果你得到了如上图所示的错误提示信息,那么在这样的情况之下,我们可以选择使用“null”。
现在,我们需要将每一个数据列转换为“@@version”或者“db_name()”,你可以在下面的视频教程中了解到我是如何进行操作的。
接下来,当我们将“@@version”插入数据列中之后,如果这一列数据存在漏洞,那么我们将会得到如下图所示的信息….
除此之外,我们还有很多其他的方法可以从MSSQL中获取到更多的信息,如下所示:
1.@@version- 获取版本信息;
2.db_name() – 获取datebase()的名称
3.user,system_user,current_user,user_name – 获取当前用户名
4.@@SERVERNAME – 获取有关服务器主机的信息。
现在,我们来提取出表名。下面给出的查询语句与MySQL中的查询语句有一些不同的地方,MSSQL中的查询语句中缺少限制条件。
现在,我们可以利用同样的方法提取出表中相应的列名。查询语句如下所示:
现在,我们可以将数据表和数据列中的信息全部输出。在这里,我们可以使用“%2b”(即符号“+”)来进行数据的拼接。
到这里,我们的操作基本上就快要完成了。
观看视频-MSSQL注入新手教程:
在这里,我们的MSSQL Union注入新手教程就到此结束了,希望大家在学习完这部分内容之后,能够勤于练习。感兴趣的读者也可以进行深入学习。