您的位置:首页 > 数据库

MSSQL Union注入新手教程

2017-07-13 20:59 393 查看
今天,我将通过这篇文章来一步一步教会大家如何进行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注入新手教程:视频地址:http://edu.aqniu.com/course/157在这里,我们的MSSQL Union注入新手教程就到此结束了,希望大家在学习完这部分内容之后,能够勤于练习。感兴趣的读者也可以进行深入学习。本来转载自:IT摆渡网--一个IT实时问答系统--快速解决你的任何IT问题,无需等待!---www.itbaiduwang.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息