'MS-SQL'에 해당되는 글 2건

  1. 2008/08/28 MS-SQL2005 DTS 시 문제점.
  2. 2008/06/21 Mass SQL Injection 당한 DB 의 스크립트 삭제 쿼리
STUDY/윈도우2008/08/28 12:51

MS-SQL 2005 로 DTS 시 문제점을 적어본다.

예를 들어

유저명.스키마.admin 이라는 테이블을 -> 유저명.스키마_1.admin 으로 이전시

보통 다음과 같은 절차를 거친다.
1. 데이터를 가져올 서버 지정
2. 데이터를 저장할 서버 지정
3. 데이터를 가져올 테이블 및 뷰 지정 혹은 수동으로 쿼리 설정
4. 테이블 선택 및 매핑 설정
5. 작업내용 미리보기
6. 이전

이 때 4번에서 어떠한 설정을 바꾸더라도
기존 DB 의 기본 키 값으로 설정되어있는 열은 키 값이 빠져서 데이터 전송이 된다.

가능한 모든 수를 적지는 않았지만, DTS 기능의 경우 되도록이면 순수 데이터 이전에만
사용하는 것이 좋을 것 같다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 하이바네.P
STUDY/보안2008/06/21 23:38

해당 DB 에 로그인 한 다음 쿼리 분석기로 다음과 같은 쿼리를 실행해 보자!!!!

---------------------------------------------------------------------------------------------------

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;

---------------------------------------------------------------------------------------------------
출처: http://hackademix.net
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 하이바네.P