database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4502 게시물 읽기
No. 4502
SQL 인젝션 룰 적용 오류 문의 ~~
작성자
안광식(newan2000)
작성일
2008-10-31 11:16
조회수
5,680


=====================================================================================================================================

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 ''%<noscript%'''

      );

  FETCH NEXT FROM Table_Cursor INTO @T, @C;

END;

CLOSE Table_Cursor;

DEALLOCATE Table_Cursor;


========================================================================================================================================


위의 룰을  적용할 경우 아래와 같은 메세지가 출력이 됩니다 

SQL 초보라 너무 궁금합니다 


개체 이름 'rec_resume_new'이(가) 잘못되었습니다.

메시지 208, 수준 16, 상태 1, 줄 1

개체 이름 'rec_resume_new'이(가) 잘못되었습니다.

메시지 208, 수준 16, 상태 1, 줄 1

개체 이름 'rec_resume_new'이(가) 잘못되었습니다.

메시지 208, 수준 16, 상태 1, 줄 1

개체 이름 'rec_resume_new'이(가) 잘못되었습니다.

메시지 208, 수준 16, 상태 1, 줄 1

개체 이름 'rec_resume_new'이(가) 잘못되었습니다.

쿼리의 오류 메시지가 최대 수를 초과했습니다. 처음 1000개 메시지만 표시됩니다.


=====================================================================================================================================


위의 메세지때문에 인젝션 당한 데이터 베이스를 복구 할수 없어서 이렇게 문의드립니다 

고수님들 좀 도와주세요 ^^

이 글에 대한 댓글이 총 1건 있습니다.

-- 음 일단은 아래 구문만 돌려보시면 테이블명과 컬럼명이 출력될것입니다.

 
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);

--- 그중에서  rec_resume_new 의 테이블명이 구문 update를 할때 오류가 나는걸로 예상됩니다.

일단은 임시적으로 'rec_resume_new' 의 테이블을 제외한 구문을 실행시켜보시기 바랍니다.

SELECT a.name, b.name
FROM sysobjects a, syscolumns b
WHERE a.id = b.id AND a.xtype = 'u' AND a.name != 'rec_resume_new' AND
(b.xtype = 99 OR
b.xtype = 35 OR
b.xtype = 231 OR
b.xtype = 167);





임진표(운가라)님이 2008-11-03 09:47에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4508사용자 삭제에러
임철수
2008-11-05
5695
4507이런 상황에선 어떻게 해야할지... [2]
1인
2008-11-04
5106
4504update 중인 table에는 select가 안되나요? [1]
하홍민
2008-10-31
5038
4502SQL 인젝션 룰 적용 오류 문의 ~~ [1]
안광식
2008-10-31
5680
4499최소, 최대값 범위에 속한 데이터 가져오기 [1]
앤시스
2008-10-27
5352
4498최근 6개월만 남기고 지우기 [2]
하홍민
2008-10-24
5293
4497injection 공격 대응 [1]
지우개
2008-10-24
5332
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다