SQL服务器是怎样储存密码的.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL服务器是怎样储存密码的

SQL服务器是怎样储存密码的? SQL服务器使用了一个没有公开的函数pwdencrypt()对用户密码产生一个hash。通过研究我们可以发 现这个hash储存在mater数据库的sysxlogins表里面。这个可能已经是众所周知的事情了。 pwdencrypt()函数还没有公布详细的资料,我们这份文档将详细对这个函数进行讨论,并将指出sql 服务器储存hash的这种方法的一些不足之处。实际上,等下我将会说‘密码hashes’。(allyesno:后 文会讨论到,由于时间的关系即使当密码相同的时候生成的hash也并不是唯一一个,所以是hashes) SQL的密码hash看起来是怎样的呢? 我们使用查询分析器,或者任何一个SQL客户端来执行这条语句: select password from master.dbo.sysxlogins where name=sa 屏幕会返回类似下面这行字符串的东东。 0x01008D504D65431D6F8AA7AED333590D7DB1863CBFC98186BFAE06EB6B327EFA5449E6F649BA 954AFF4057056D9B 这是我机子上登录密码的hash。 通过分析hash我们可以从中获取pwdencrypt()的一些什么信息? 1.时间 首先我们使用查询 select pwdencrypt() 来生成hash select pwdencrypt(ph4nt0m) 生成hash 0406C3CD0954EA4E909A2D8FE26B55A19C54EAC3123E8C65ACFB8F6F9415946017F7D 4B8279BA19EFE77 ok再一次 select pwdencrypt(ph4nt0m) 0x0100B218215F1C57DD1CCBE3BD05479B1451CDB2DD9D1CE2B3AD8F10185C76CC44AFEB3DB85 4FB343F3DBB106CFB 我们注意到,虽然两次我们加密的字符串都是ph4nt0m但是生成的hash却不一样。 那么是什么使两次hash的结果不一样呢,我们大胆的推测是时间在这里面起到了关键的作用, 它是创建密码hashes和储存hashes的重要因素。之所以使用这样的方式, 是因为当两个人输入同样的密码时可以以此产生不同的密码hashes用来掩饰他们的密码是相同的。 2.大小写 使用查询 select pwdencrypt(ALLYESNO) 我们将得到hash 0x01004C61CD2DD04D67BD065181E1E8644ACBE3551296771E4C91D04D67BD065181E1E8644ACBE3551296 771E4C91 通过观察,我们可以发现这段hash中有两段是相同的,如果你不??马上看出来,让我们把它截断来 看。 0x0100(固定) 4C61CD2D(补充key) D04D67BD065181E1E8644ACBE3551296771E4C91(原型hash) D04D67BD065181E1E8644ACBE3551296771E4C91(大写hash) 现在我们可以看出来最后两组字符串是一模一样的了。这说明这段密码被相同的加密方式进行了两次加密。一组是按照字符原型进行加密,另一组是按照字符的大写形式进行了加密。当有人尝试破解SQL密码的时候将会比他预期要容易,这是一个糟糕的加密方式。因为破解密码的人不需要理会字符原型是大写还是小写,他们只需要破解大写字符就可以了。这将大大减少了破解密码者所需要破解密码的字符数量。(allyesno:flashsky的文章《浅谈SQL SERVER数据库口令的脆弱性》中曾经提到“如因为其算法一样,如果HASH1=HASH2,就可以判断口令肯定是未使用字母,只使用了数字和符号的口令”。实际上并不如flashsky所说的完全相同,我们使用了select pwdencrypt()进行加密以后就可以发现使用了数字和符号和大写字母的密码其hash1和hash2都会相同,所以这是flashsky文章中一个小小的bug) 补充key 根据上文所述,当时间改变的时候也会使得hash改变,在hash中有一些跟时间有关系的信息使得密 码的hashes不相同,这些信息是很容易获取的。当我们登录的时候依靠从登录密码中和数据库中储 存的hash信息,就可以做一个比较从而分析出这部分信息,我们可以把这部分信息叫做补充key。 上文中我们获取的hash中,补充key 4C61CD2D 就是这个信息的一部分。 这个key 4C61CD2D 由以下阐述的方法

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档