一个SQL Server Sa密码破解的存储过程
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密码破解的存储过程相关推荐
- 恢复 Microsoft SQL Server SA 密码的三种方法
如果您丢失了 SA 密码,您可能认为唯一的选择是重新安装 SQL Server 并重新附加所有用户数据库.只需在单用户模式下启动 SQL Server,您就可以使用 OSQL 命令轻松恢复 SA 密码 ...
- SQL Server中的功能与存储过程
介绍 (Introduction) Usually DBAs prefer stored procedures in SQL instead of functions in SQL Server. I ...
- SQL Server中的功能和存储过程比较
介绍 (Introduction) In a previous article, Functions vs stored procedures in SQL Server, we compared F ...
- Windows Server 2008密码破解
Windows Server 2008密码破解 ant 案例背景: 1.Windows Server 2008 R2的DD镜像文件一个,大小:1TB,文件名:1.001 2.用户名.密码未知. 案例目 ...
- 如何去重一个SQL Server表
前面我写了个博客记录如何去重一个oracle表(link), 主要是利用了oracle的rowid伪列和row_number()分析函数. 有读者写邮件问, 如何去重一个SQL Server表, 场景 ...
- 获取SQL SERVER某个数据库中所有存储过程的参数
2019独角兽企业重金招聘Python工程师标准>>> 一.获取指定数据库中所有存储过程的参数的方法 SELECT sp.object_Id as FunctionId, sp.na ...
- SQL Server无法删除数据库 xxx,因为该数据库当前正在使用(如何删除一个Sql Server数据库)
1.一般情况下删除一个Sql Server数据库: 新建查询→输入"drop database xxx(xxx为数据库名)"→执行. 但有时会报错:无法删除数据库 "li ...
- SQL Server 2005中创建CLR存储过程
在2005之前的版本创建存储过程都是在数据库里面写Transact-SQL语言实现的,不过现在SQL Server 2005支持用其他面向对象的语言编写CLR存储过程了,关于这样做的好处,官方有很多解 ...
- Microsoft SQL Server SA权限最新入侵方法
在获得SA密码后,往往因为服务器管理者或"前人"将net.exe和net1.exe被限制使用,无法添加管理员账号.我们知道VBS在活动目录(ADSI)部分有一个winnt对象,用来 ...
最新文章
- 125.数据传输方式
- 有限个极限运算及常见错误小结
- 【Linux】11.将ubuntu电脑设置为一台可远程ssh或sftp访问的服务器
- 深入理解Java的equals和hashCode方法
- 静态编译qemu_使用QEMU chroot进行固件本地调试
- 搜狗浏览器也可以直接安装Chrome插件,太棒了
- 卷积神经网络(CNN)与特殊的卷积
- mysql 当前timestamp_MySQL表结构使用timestamp以自动获取当前时间
- lvs+keepalived+nginx实现高性能负载均衡集群 高性能jsp集群
- 一个计算机高手的成长zz
- 3.netwox网络工具集入门教程
- Cesium 鼠标单击和双击事件
- [Winter Vacation] 语文实词虚词练习册答案
- linux下的定时任务
- Navigator对象,获取浏览器类型userAgent,机器类型platform
- 电脑运行应用程序出现0xc000007b的解决方法
- 英特尔发布酷睿系列 | 历史上的今天
- Linux驱动01 - Timer
- 如何利用PuTTY连接Windows主机和Linux虚拟机
- 机器人及无人驾驶领域真实人才供需状况如何?企业真正需要什么样的人才?