본문 바로가기
Portswigger/SQL injection

Portswigger - SQL injection attack, querying the database type and version on Oracle solution

by jh117jh 2023. 7. 27.
728x90

UNION을 이용하여 데이터베이스의 버전을 가져오면 문제가 풀리는것 같다.

 

지난 문제들과 동일하게 카테고리를 get방식으로 받고 있고 

 

Make the database retrieve the strings: 'Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production, PL/SQL Release 11.2.0.2.0 - Production, CORE 11.2.0.2.0 Production, TNS for Linux: Version 11.2.0.2.0 - Production, NLSRTL Version 11.2.0.2.0 - Production' 과 같은 데이터베이스 버전 정보를 출력하면 되는것 같다.

 

각 데이터베이스 마다 버전 정보를 불러오는 쿼리문이다.

 

oracle만 유일하게 from을 사용하여 테이블을 지정해줘야 된다.

이는 oracle의 특성으로 union을 이용하려면 테이블을 지정해야줘야된다.

 

우선 union 공격을 사용하려면 컬럼수와 데이터 타입을 알아내야된다.

 

먼저 데이터베이스 정보를 출력하기 때문에 문자열 타입일것 같아 문자열을 넣고 테이블은 오라클 내장테이블중 하나인 TAB를 넣어줬더니 

컬럼 수가 2개인것을 알 수 있었다.

 

이제 문제 푸는건 거의 끝이다.

 

1,2중 하나를 banner으로 바꾸고 테이블을 v$version로 바꿔주면 된다.

 

 

 

728x90