SQL Injection 당한 Field Update용 쿼리문
select [필드명], substring([필드명], 1, charindex('<', [필드명])-1)
from [테이블명]
where [필드명] like '%<s%'
검색부분을 다시 강화하는 방법도 있겠고...
좌우지간 급한대로 위와 같이 쿼리해서 결과값을 확인한 후,
update [테이블명]
set [적용할 필드명] = substring([적용할 필드명], 1, charindex('<', [적용할 필드명])-1)
where [필드명] like '%<s%'
필드에 들어있는 값이 원래부터 script 태그가 없다는 가정하에 적용할 수 있음.
- 피가되고 살이되어 줄 블로그 -
http://blog.empas.com/errorism/22500903
- 인젝션 피해 테이블과 필드의 검사시에는 아래 쿼리를... -
DECLARE @T varchar(255),@C varchar(255)
DECLARE Table_Cursor CURSOR FOR
select top 3000 a.name,b.name
from sysobjects a,syscolumns b
where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
order by a.name asc
OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0)
BEGIN
exec('insert into tmp_s (tbl,clm,val) select '''+@T+''', '''+@C+''', ['+@C+'] from ['+@T+'] where convert(varchar,['+@C+'],8000) like ''%script%''')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
--[출처] [MS-SQL] Mass SQL Injection 공격에 의한 감염여부 파악하는 쿼리|작성자 nicos