乙個SQL密碼破解的儲存過程

2021-09-30 03:03:11 字數 2029 閱讀 5491

原帖:

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

理論上可以破解任意位數的密碼

條件是你的電腦配置足夠,時間足夠  

--鄒建 2004.08--*/

/*--呼叫示例

exec p_getpassword

--*/

create proc p_getpassword

@username sysname=null, --使用者名稱,如果不指定,則列出所有使用者

@pwdlen int=2 --要破解的密碼的位數,預設是2位及以下的

asset @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用乙個儲存過程呼叫另乙個儲存過程

一 直接呼叫的例子 建被呼叫儲存過程b create procedure b sql nvarchar 500 null,outpara nvarchar 500 output asdeclare sqlstr nvarchar 500 begin set outpara sql end 建呼叫儲存...

SQL 儲存過程裡呼叫另乙個儲存過程

由於建立了乙個儲存過程,並且要在另乙個儲存過程裡呼叫這個儲存過程所以在網上找了一下相關的 現在總結一下,防止以後還會用到 由於這次我寫的儲存過程只需要返回乙個求和的結果,所以我使用了output 引數,即執行了儲存過程以後返回乙個值 具體 如下 create procedure dbo t1 tes...

乙個儲存過程

create or replace package abc zys is procedure daily census end abc zys 建乙個包,包中有儲存過程daily census。不涉及任何引數。create or replace package body abc zys is pro...