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...