수업

12/15

진태현 2023. 12. 15. 10:05

보고서 작성법

- 글자는 21포인트 

- 고딕체, 휴먼명료체

- 파란색이나 빨간색으로 강조 표시 

 

ex)

- 일반적인 개요

- 테스트 

- 보안 방법


SQL Injection

- 입력값을 쿼리문으로 작성해서 DBMS 시스템의 제어권을 탈취, 또는 기능을 우회 오용이 가능하다. 

  • 홑따옴표는 항상 쌍으로 사용되야 하는데, 하나만 사용할 경우 오류 발생해서 에러메시지로 정보로 공격자의 추가 공격 가능성이 생김 
  • 쿼리문이 항상 참이 되는 값을 넣으면 데이터에 접근하고 조회가 가능함 ex) Smith' or 'a' = 'a
  • Union 구문을 이용해서 정보 노출 ex) UNION select 
  • Stored procedure 를 사용해서 데이터베이스 제어권 탈취 > ; exec 
  • Blind SQL Injection 쿼리 실행 결과로 서버 반응을 보고 정보 수집 

 

Numeric SQL Injection 

* Numeric 타입인지 String 타입인지 생각하면서 SQL쿼리 생각 

ex) 

Numeric = 101 or 1 = 1

String = Smith' or '1'='1 

 

>> 문자열과 결합하는 코드 > 쿼리 구문 

 

소스 코드를 안전한 형태로 변경하는 객체 

- PreparedStatement : 정의된 쿼리 구조로 실행 보장


코드 수정 시에 

- 쿼리 문 정의 코드 확인 

- Statement 객체 확인

- 쿼리 실행 코드 확인 

 

Blind Numeric SQL Injection

- 계좌번호의 유효성 검증 서비스 

>> sql문 작성 후 뒤 찾고자 하는 연산 값 

101 and (select pin from pins where cc_number '______') > 10000

 

101 and (select name from pins where cc_number = '4321432143214321') = 'Jill'

 

 

101 and (select ascii(substr(name, 1, 1)) from pins where cc_number = '4321432143214321') = 'jill'


홑 따옴표 검색 시 어떤 DB, '%' 오류 메시지를 보아 검증, 제한 없이 그대로 쿼리문 생성 및 실행에 사용 가능 것 확인 

 

DB테이블 쿼리 찾기 

> order by 활용

 

UNION 쿼리로 실행결과

 


Sql map

- DB목록 조회 

DB목록 조회 결과

- 테이블 수 확인


SQL 인젝션 방어 기법

 

구조화된 쿼리 

> PreparedStatement 객체 사용

 

iBatis, myBatis

> #기호 사용 


HTTP 개론 

대부분 자바나 php로 만들어진 침투 테스트

- 어떻게 구동되는지 알면 보안에 큰 도움