[SQL Injection] SQL 인젝션을 당했는지 확인 및 일괄삭제 > 기술자료 | 해피정닷컴

[SQL Injection] SQL 인젝션을 당했는지 확인 및 일괄삭제 > 기술자료

본문 바로가기

사이트 내 전체검색

[SQL Injection] SQL 인젝션을 당했는지 확인 및 일괄삭제 > 기술자료

MSSQL [SQL Injection] SQL 인젝션을 당했는지 확인 및 일괄삭제

페이지 정보


본문

검색 쿼리와 추가된 <script 등을 제거해주는 쿼리입니다.
아래의 쿼리를 돌리기 전에 해당 DB로 가셨어 각 DB마다 확인을 하신 후 발견되시면 제거해주면 됩니다.


* Script 삽입 공격을 당했는지 확인하는 쿼리

DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT 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);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN

exec ('select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%''');
-- print 'select ['+@C+'] from ['+@T+'] where ['+@C+'] like ''%'''

FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;





* 위의 공격을 당했을 때 복원하는 쿼리 (100% 다 되는 것은 아님 - 별도 확인 필요)
* 해킹 시 길이가 긴 경우에는 짤리고 들어가는 현상이 발생함 - 이 경우에는 복원을 해도 원상복구가 안됨
* 백업 받은 것을 복원하는 수 밖에는 없음

[ 방법 1 ]
DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT 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);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN
  EXEC(
    'update ['+@T+'] set ['+@C+'] = left(
            convert(varchar(8000), ['+@C+']),
            len(convert(varchar(8000), ['+@C+'])) - 6 -
            patindex(''%tpircs<%'',
                      reverse(convert(varchar(8000), ['+@C+'])))
            )
      where ['+@C+'] like ''%<script src=http://xxx.com/s.js></script>'''
      );
  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;

[ 방법 2]
DECLARE @T varchar(255), @C varchar(255);
DECLARE Table_Cursor CURSOR FOR
SELECT 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);
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @T, @C;
WHILE (@@FETCH_STATUS = 0) BEGIN
  EXEC(
    'update ['+@T+'] set ['+@C+'] = left(
            convert(varchar(8000), ['+@C+']),
            len(convert(varchar(8000), ['+@C+'])) - 6 -
            patindex(''%tpircs<%'',
                      reverse(convert(varchar(8000), ['+@C+'])))
            )
      where ['+@C+'] like ''%<script%</script>'''
      );
  FETCH NEXT FROM Table_Cursor INTO @T, @C;
END;
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;



* 일괄 삭제후 Script 삽입 공격을 당했는지 확인하는 쿼리 로 검색결과




참고자료
http://saybox.tistory.com/453 
http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10110&eid=e09r73HUi2TsjbBq+N+3LM/EjZrEhTeH&qb=c3FsIMDOwae8xyC+x7y6xNq15SC6ubG4&enc=euc-kr&pid=flLVeloi5TNsstGUupwsss--043004&sid=SgI4dJ4WAkoAACTPbRs

댓글목록

등록된 댓글이 없습니다.


Total 2,641건 97 페이지
  • RSS
기술자료 목록
721
HTML   18450  2009-05-22 10:16  
720
일반   13330  2009-05-20 19:54  
719
일반   32505  2009-05-20 19:00  
718
HTML   23801  2009-05-20 18:42  
717
일반   23178  2009-05-19 19:44 ~ 2009-05-20 00:00  
716
ClassicASP   29182  2009-05-19 13:00  
열람
MSSQL   16562  2009-05-08 09:43  
714
MSSQL   18319  2009-05-08 08:28  
713
호스팅   15252  2009-05-06 18:47  
712
호스팅   17097  2009-05-03 13:20 ~ 2011-08-19 00:00  
711
그누보드   12153  2009-05-03 03:26  
710
Linux   12905  2009-05-01 18:15  
709
그누보드   11615  2009-05-01 14:20  
708
호스팅   11474  2009-05-01 12:29  
707
HTML   26246  2009-04-30 12:01 ~ 2013-01-13 00:00  
706
그누보드   11878  2009-04-30 11:12  
705
JavaScript   24308  2009-04-28 12:28  
704
Adobe   14032  2009-04-28 11:39  
703
JavaScript   18806  2009-04-28 11:26 ~ 2011-06-29 00:00  
702
Adobe   12584  2009-04-25 18:18  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.