[SQL Injection] - Oracle Error based SQL Injection
2012. 10. 18. 16:28
인젝션 기법 중 에러 기반 인젝션은 쉽고 빠르기에 많은 분들이 알고 계시지만, 많은 분들이 MSSQL 에서만 가능한
것으로 알고 있기도 합니다. 오라클에서의 에러 인젝션은 의외로(?) 잘 모르는 경우가 많습니다.
(물론 알 사람들은 다 알지만..)
오라클에서도 마찬가지로 에러 인젝션 취약점이 존재하면 손쉽게 DB 정보를 취득할 수 있기에 오라클 기반의
웹애플리케이션 에서도 상당히 중요한 취약점이라 할 수 있습니다.
어쩃든! 오라클 에러 기반 인젝션에 대해 간단히 적어보겠습니다.
기본적인 인젝션 개념을 알고 계신다는 전제 하에 설명은 간략히 하겠습니다.
# 예제 페이지
- list.jsp : id 값을 입력 받아 정보를 뿌려주는 페이지
# 예제 페이지 소스
- 소스를 보면 간단히 id 값을 입력 받아 "select * from users where ID=입력값" 으로 쿼리를 수행하는 것을 알 수 있습니다.
# 에러 발생 유도
- 소스에서 별다른 필터링을 하지 않기 때문에 ' 를 입력하면 쿼리문은 아래와 같이 입력되어 에러를 유발합니다.
select * from users where ID=' 3 ' '
위에서와 같이 오라클 예외 에러 메시지(ORA-xx) 가 발생한다면 이 페이지에는 에러 기반 인젝션이 가능합니다.
# 인젝션 가능성 확인
![](http://cafefiles.naver.net/20120311_233/kimhmin85_1331475640504gShXc_JPEG/4.JPG)
위와 같이 입력하여 3 일때와 동일하게 결과가 출력된다면 확실하게 인젝션이 가능합니다.
# 에러 기반 인젝션에 이용할 패키지
![](http://cafefiles.naver.net/20120311_33/kimhmin85_1331475640618Cy7cQ_JPEG/6.JPG)
위에서와 같이 오라클 예외 에러 메시지(ORA-xx) 가 발생한다면 이 페이지에는 에러 기반 인젝션이 가능합니다.
# 인젝션 가능성 확인
위와 같이 입력하여 3 일때와 동일하게 결과가 출력된다면 확실하게 인젝션이 가능합니다.
# 에러 기반 인젝션에 이용할 패키지
에러기반 인젝션을 위해 에러 메시지를 뿌려줄 특별한 패키지를 사용합니다.
위 말고도 몇가지 다른 패키지도 있습니다.
utl_inaddr.get_host_name() 은 해당 호스트를 질의할 수 없으면 에러 메시지로 해당 문자열을 출력합니다.
# 에러 메시지 확인
해당 패키지 안의 문자열이 표시됨을 알 수 있습니다.
즉, 해당 () 안에 원하는 쿼리문을 실행시켜 쿼리 결과값이 보이도록 할 수 있다는 것을 확인 할 수 있습니다.
# 에러기반 인젝션 수행
- 위와 같이 알수없는 "쿼리 결과값" 호스트 라는 형식으로 쿼리 결과값을 확인 할 수 있습니다 ^^
지금까지 짧은 인젝션 팁이었습니다. ![](http://cafeimgs.naver.net/editor/emoticon/1_36.gif)
![](http://cafeimgs.naver.net/editor/emoticon/1_36.gif)
'Web Hacking' 카테고리의 다른 글
Filtering 발견 및 우회 테크닉 (2) | 2013.03.26 |
---|---|
javascript 난독화(Obfuscation) (0) | 2013.03.21 |
Mysql 에서의 Error Based SQL Injection (5) | 2012.10.18 |
웹 프록시 툴 burp suite 의 다양한 확장팩(?) 을 모음 사이트 (0) | 2012.08.21 |
HTML5 / Hacking & Security (1) | 2012.08.03 |