• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    sql注入数据库修复的两种实例方法

    1.第一种情况是 需要将指定的 注入字符串全部替换掉(仅替换注入的字符串为空)

    复制代码 代码如下:

    declare @delStr nvarchar(500)   
    set @delStr='script src=https://www.jb51.net/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多表连接查询实例分析(详细图文)
    下一篇:一个删选数据的例子,使用GROUP、DISTINCT实例解析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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