最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

sql注入数据库修复的两种实例方法

来源:动视网 责编:小采 时间:2020-11-09 07:06:05
文档

sql注入数据库修复的两种实例方法

sql注入数据库修复的两种实例方法:1.第一种情况是 需要将指定的 注入字符串全部替换掉(仅替换注入的字符串为空) 代码如下:declare @delStr nvarchar(500) set @delStr='<script src=//www.gxlcms.com/js/common.js></script>' --这里被注入
推荐度:
导读sql注入数据库修复的两种实例方法:1.第一种情况是 需要将指定的 注入字符串全部替换掉(仅替换注入的字符串为空) 代码如下:declare @delStr nvarchar(500) set @delStr='<script src=//www.gxlcms.com/js/common.js></script>' --这里被注入


1.第一种情况是 需要将指定的 注入字符串全部替换掉(仅替换注入的字符串为空)
代码如下:
declare @delStr nvarchar(500)   
set @delStr='<script src=//www.gxlcms.com/js/common.js></script>' --这里被注入的字段串   
/****************************************/  
/**********以下为操作实体************/   
set nocount on 
declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int  
declare @sql nvarchar(2000)  
set @iResult=0   
declare cur cursor for  
select name,id from sysobjects where xtype='U' 
open cur   
fetch next from cur into @tableName,@tbID  
while @@fetch_status=0   
begin  
declare cur1 cursor for  
select name from syscolumns where xtype in (231,167,239,175, 35, 99) and id=@tbID   
open cur1   
fetch next from cur1 into @columnName   
while @@fetch_status=0   
begin  
set @sql='update [' + @tableName + '] set ['+ @columnName +']= SUBSTRING([' + @columnName + '],' + '1, PATINDEX( ''%' + @delStr + '%'', [' + @columnName + '])-1) + ' + 'SUBSTRING([' + @columnName + '], PATINDEX( ''%' + @delStr + '%'', [' + @columnName + ']) + ' + 'len(''' + @delStr + ''') , datalength([' + @columnName + '])) where ['+@columnName+'] like ''%'+@delStr+'%''' 
exec sp_executesql @sql   
set @iRow=@@rowcount   
set @iResult=@iResult+@iRow   
if @iRow>0   
begin  
print '表:'+@tableName+',列:'+@columnName+'被更新'+convert(varchar(10),@iRow)+'条记录;'  
end  
fetch next from cur1 into @columnName  

end  
close cur1   
deallocate cur1  
fetch next from cur into @tableName,@tbID   
end  
print '数据库教程共有'+convert(varchar(10),@iResult)+'条记录被更新!!!' 
close cur   
deallocate cur   
set nocount off

2.第二种是  需要将注入到表中起始位置到最后都删掉。(此种方法直接找到注入的起始位置,后面的全部删掉)
代码如下:
--恢复被注入数据库   
--2013-09-26  
declare @delStr nvarchar(500)   
set @delStr='</title><style>.' --被注入的字段串的开始采样,从此位置后面的数据都为注入数据  

/**********以下为操作实体************/   
set nocount on 
declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int  
declare @sql nvarchar(2000)  
set @iResult=0   
declare cur cursor for  
select name,id from sysobjects where xtype='U' 
open cur   
fetch next from cur into @tableName,@tbID  
while @@fetch_status=0   
begin  
declare cur1 cursor for  
select name from syscolumns where xtype in (231,167,239,175, 35, 99) and id=@tbID   
open cur1   
fetch next from cur1 into @columnName   
while @@fetch_status=0   
begin  
set @sql='update [' + @tableName + '] set ['+ @columnName +']=  
 SUBSTRING([' + @columnName + '],1, PATINDEX( ''%' + @delStr + '%'', [' + @columnName + '])-1)   where ['+@columnName+'] like ''%'+@delStr+'%''' 
exec sp_executesql @sql   
set @iRow=@@rowcount   
set @iResult=@iResult+@iRow   
if @iRow>0   
begin  
print '表:'+@tableName+',列:'+@columnName+'被更新'+convert(varchar(10),@iRow)+'条记录;'  
end  
fetch next from cur1 into @columnName  

end  
close cur1   
deallocate cur1  
fetch next from cur into @tableName,@tbID   
end  
print '数据库教程共有'+convert(varchar(10),@iResult)+'条记录被更新!!!' 
close cur   
deallocate cur   
set nocount off

您可能感兴趣的文章:

  • 利用SQL注入漏洞登录后台的实现方法
  • 有效防止SQL注入的5种方法总结
  • 寻找sql注入的网站的方法(必看)
  • 文档

    sql注入数据库修复的两种实例方法

    sql注入数据库修复的两种实例方法:1.第一种情况是 需要将指定的 注入字符串全部替换掉(仅替换注入的字符串为空) 代码如下:declare @delStr nvarchar(500) set @delStr='<script src=//www.gxlcms.com/js/common.js></script>' --这里被注入
    推荐度:
    标签: 修复 恢复 方法
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top