독까의 이야기

SQL Injection 또는 외부 침입으로 인하여 DB 에 비정상 자료 등록되는 경우가 발생함

스팸게시글 등록 또는 광고 웹페이지 경로 등록 등 게시글 등록시 일괄 삭제 필요함

순서 1

프로시저 생성

CREATE PROCEDURE  [DB_DEL_TEXT]
AS

DECLARE @TP  int;
DECLARE @TBL varchar(255), @CLN varchar(255),  @DEL_STR varchar(255);
SET @DEL_STR='광고광고광고<script src=http://fuckingchina.com></script>'   -- 여기의 ' ' 안의 내용이 삭제 될 예정인 내용

DECLARE Table_Cursor CURSOR FOR
SELECT a.name, b.name ,b.xtype
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  OR b.xtype=175  OR b.xtype=239 );

OPEN Table_Cursor;

FETCH NEXT FROM Table_Cursor INTO @TBL, @CLN, @TP;
WHILE (@@FETCH_STATUS = 0) BEGIN
    IF  @TP  > 100
    BEGIN
          EXEC('UPDATE ['+ @TBL +'] set [' + @CLN + '] = REPLACE('+ @CLN+' , '''+@DEL_STR +''','''' )');
    END
    ELSE
    BEGIN
                    EXEC('UPDATE ['+ @TBL +'] set [' + @CLN + '] = REPLACE(CONVERT(varchar(8000),'+ @CLN+') , '''+@DEL_STR +''','''' )');
    END
FETCH NEXT FROM Table_Cursor INTO @TBL, @CLN,@TP;
END;

CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
GO

 

순서2

일괄 삭제를 진행 할 DB 접근하여 새 쿼리 실행 후 생성 된 프로시저 실행

Exec DB_DEL_TEXT