破解MSSQL的SA密码

代码演示暴力破解MSSQL的帐号和密码,包括管理员帐号sa的密码。

今天看到网上有这样一篇文章“一个SQL Server Sa密码破解的存储过程”:http://www.wangchao.net.cn/bbsdetail_1804540.html,方法就是暴力破解MSSQL的帐号和密码,包括管理员帐号sa的密码,发现写的很好,不知原贴何处,网上有多处转载,下面我对其它的代码稍做修改,并进行了一些性能分析。

首先说说破解过程序核心思想,就是存储帐号密码的master.dbo.sysxlogins表和未公布的密码比较存储过程pwdcompare。经过一方分析,修改了部分代码,下面贴出修改前后的代码,

一个SQL Server Sa密码破解的存储过程

一个SQL Server Sa密码破解的存储过程

 下面是我修改后的代码:

修改后的SQL Server Sa密码破解的存储过程

 

我测试如下

p_GetPassword2 'b', 6

用户名 密码 密码ASCII 查询次数和行数
b 123 49,50,51 1th,66rows;2th,4356rows;3th,287496rows

 

性能分析:

本例以一个查询能查询bigint的最大值条记录9223372036854775807为限做为主机最大性能,来粗略计算破解性能。

破解一个帐号的密码长度,破解时间和性能消耗,是以所有用于破解的字符长度为底,以密码长度为指数的指数函数,即:破解帐号个数 * (所有用于破解的字符个数)最长密码长度次方 < 主机最大性能:

  • 原存储过程使用256个破解字符,理论上可以破解7位密码,即2567<Max(bigint)。
  • 我修改的存储过程使用66个键盘常规字符,理论上可以破解10位密码,即6610<Max(bigint)。
  • 如果知道密码是10个数字字符的组合,理论上可以破解19位密码,即1019<Max(bigint)。

 

posted on 2009-03-20 16:34  简单  阅读(13565)  评论(11编辑  收藏  举报

导航