存储过程被SQL注入式攻击后的注入代码
2009-04-04 08:22:34 来源:WEB开发网存储过程的内容
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
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接