[정보보안] SQL 인젝션(Injection)

[정보보안] SQL 인젝션(Injection)

응용 프로그램 보안 상의 허점을 의도적으로 이용하여, 개발자가 생각지 못한 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 공격방법입니다.


SQL Injection 공격의 원리

  1. SQL 인젝션 공격에 취약점이 발생하는 곳은 웹 애플리케이션과 데이터베이스가 연동되는 부분에 공격자가 임의의 SQL 명령어를 삽입하여 공격합니다.
  2. 보통 사용자 로그인 부분, 게시물 검색 부분, 우편번호 검색 부분, 자료실 등이 대표적이다.


SQL Injection 공격 예시

SQL Injection 공격 : "파라미터를 이용한 쿼리의 재구성"
-> 웹 어플리케이션이 뒷 단에 있는 Databae에 질의(쿼리)를 하는 과정 사이에 일반적인 값 외에 악의적인 의도를 갖는 구문을 함께 삽입하여 공격자가 원하는 SQL 쿼리문을 실행하는 대표적인 웹 해킹 기법

Where절에 id=''  or 1=1 이라는 문장이 들어간다면?
id =''는 id에 들어가는 내용이 없으므로 거짓으로 판정됩니다.
하지만 1=1라는 문장은 항상 참입니다.
그 두 문장 사이에는 OR가 쓰였습니다. 둘 중 한 문장이 참이면 무조건 참이 되죠

즉, if문의 의미가 사라집니다! 무조건 참이 출력되기 때문이죠.
따라서 저렇게 문장을 쓰면 모든 행이 출력됩니다!



SQL Injection 공격의 종류

  1. 인증우회 : AB(Auth Bypass)
  2. 데이터노출 : DD(Data Disclosure)
  3. 원격명령 실행 : RCE(Remote Command Execute)


출처

댓글

이 블로그의 인기 게시물

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?

[Python] # -*- coding: utf-8 -*-를 쓰는 이유