sql盲注如何修補 sql注入資料庫修復方法

2021-10-13 03:29:01 字數 3108 閱讀 7705

1.第一種情況是 需要將指定的 注入字串全部替換掉(僅替換注入的字串為空)

declare @delstr nvarchar(500)

set @delstr='' --這裡被注入的字段串

/**********以下為操作實體************/

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)+'條記錄;'

endfetch next from cur1 into @columnname

endclose cur1

deallocate cur1

fetch next from cur into @tablename,@tbid

endprint '資料庫教程共有'+convert(varchar(10),@iresult)+'條記錄被更新!!!'

close cur

deallocate cur

set nocount off

2.第二種是  需要將注入到表中起始位置到最後都刪掉。(此種方法直接找到注入的起始位置,後面的全部刪掉)

--恢復被注入資料庫

--2013-09-26

declare @delstr nvarchar(500)

set @delstr='

/**********以下為操作實體************/

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)+'條記錄;'

endfetch next from cur1 into @columnname

endclose cur1

deallocate cur1

fetch next from cur into @tablename,@tbid

endprint '資料庫教程共有'+convert(varchar(10),@iresult)+'條記錄被更新!!!'

close cur

deallocate cur

set nocount off

sql注入 盲注

一,盲注介紹 所謂盲注就是在伺服器沒有錯誤回顯的時候完成注入攻擊。盲注分為布林盲注和時間盲注 布林盲注 boolean 根據注入資訊返回true or fales 沒有任何報錯資訊 時間盲注 介面返回值ture 無論輸入任何值,返回的情況都是正常的來處。加入特定的時間函式,通過檢視web頁面返回的時...

sql注入 盲注

一,盲注介紹 所謂盲注就是在伺服器沒有錯誤回顯的時候完成注入攻擊。盲注分為布林盲注和時間盲注 布林盲注 boolean 根據注入資訊返回true or fales 沒有任何報錯資訊 時間盲注 介面返回值ture 無論輸入任何值,返回的情況都是正常的來處。加入特定的時間函式,通過檢視web頁面返回的時...

SQL注入 盲注

遮蔽了報錯資訊,攻擊者無法使用報錯資訊來進行注入判斷。1.boolean 盲注 無論輸入什麼只會顯示真與假 2.時間盲注 頁面沒有任何的顯示,通過時間的延遲來判斷是否存在注入 是無論輸入什麼,結果只返回真和假兩種結果。判斷資料庫名的長度 length database x 判斷表名 substr d...