WEB开发网
开发学院软件开发C语言 存储过程被SQL注入式攻击后的注入代码 阅读

存储过程被SQL注入式攻击后的注入代码

 2009-04-04 08:22:34 来源:WEB开发网   
核心提示: 存储过程的内容 ALTER PROCEDURE [dbo].[newUsersProc_Replace]@SourceStr Varchar(1000),@ReplaceStr Varchar(1000)ASBEGIN--定义替换的字符串 declare @s_str varchar(80

存储过程的内容

ALTER PROCEDURE [dbo].[newUsersProc_Replace]
 @SourceStr Varchar(1000),
 @ReplaceStr Varchar(1000)
AS
BEGIN
--定义替换的字符串
declare @s_str varchar(8000),@r_str varchar(8000)
select @s_str=@SourceStr --要替换的字符串
,@r_str=@ReplaceStr --替换成的字符串

--替换处理
declare @id int,@ptr varbinary(16)
declare @start int,@s nvarchar(4000),@len int
declare @s_str1 nvarchar(4000),@s_len int,@i int,@step int

select @s_str1=reverse(@s_str),@s_len=len(@s_str)
,@step=case when len(@r_str)>len(@s_str)
then 4000/len(@r_str)*len(@s_str)
else 4000 end

declare tb cursor local for
select articleID,start=charindex(@s_str,[字段名])-1
from 表名
where charindex(@s_str,字段名)>0
--这里可以定义要处理的记录的

条件

open tb
fetch tb into @id,@start
while @@fetch_status=0
begin
select @ptr=textptr([字段名])
,@s=substring([字段名],@start+1,@step)
from [表名]
where articleID=@id

while len(@s)>=@s_len
begin
select @len=len(@s),@i=charindex(@s_str1,reverse(@s))
if @i>0
begin
select @i=case when @i>=@s_len then @s_len else @i end
,@s=replace(@s,@s_str,@r_str)
updatetext [表名].[字段名] @ptr @start @len @s
end
else
set @i=@s_len
select @start=@start+len(@s)-@i+1
,@s=substring([字段名],@start+1,@step)
from [表名]
where articleID=@id
end
fetch tb into @id,@start
end
close tb
deallocate tb
end

上一页  1 2 

Tags:存储 过程 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接