SQL INJECTION MADE BY 김 현중
SQL Injection이란? SQL 삽입(영어: SQL Injection, SQL 인젝션, SQL 주입)은 응용프로그램 보안 상의 허점을 의도적으로 이용해, 개발자가 생각지 못한 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 공격 방법 웹 페이지를 통해 입력된 파리미터 값을 이용하여 쿼리를 (재)구성하는 방법 구문 분석, 실행을 위해 나중에 SQL Server의 인스턴스에 전달될 문자열에 악의적인 코드가 삽입되는 공격방법 테이블에 저장할 문자열 또는 meta-data로서 악의적인 코드를 삽입
SQL Injection이란?
SQL Injection 공격 DB 저장 내용(ex 인터넷 쇼핑) 사용자 ID, 비밀번호와 같은 개인정보 상품에 대한 가격과 설명 정보 주문서, 계좌 정보, 지불 비용에 대한 정보 애플리케이션에 가입된 사용자 권한 정보
SQL INJECTION Web 인증 절차 ID / Password 입력 SQL Query 생성 Database에 Query 전송 Database에서 Query 실행 반환되는 Return 값에 따라 인증 여부 판단
SQL INJECTION Web 인증 절차 4. Database에서 Query 실행 4번 과정에서 True/False만 확인하고 데이터 자체의 사실성을 확인하지 않고 조건만 확인하는 과정에서 SQL Injection이 가능.
SQL INJECTION SQL 동작 원리를 이용한 인증 우회 다음과 같이 ID와 PASS 입력 시에 참, 거짓을 맞추어 논리적인 연상에 의해 참값을 반환하게 하면 로그인이 된다.
SQL INJECTION SQL 동작 원리를 이용한 인증 우회 Select id, pwd FROM users where id = ‘admin’;-- and pwd = ‘1’ SQL 동작 원리를 이용한 인증 우회 다음과 같이 ID와 PASS 입력 시에 admin 뒤 ‘--’이 주석문을 처리 할 때 사용하는 연산자이기 때문에 패스워드 부분은 주석처리가 된다.
SQL INJECTION 실습 실습 사이트 로그인 화면
SQL INJECTION 실습 다음과 같은 에러 메시지가 출력되는 것을 확인할 수 있음.
SQL INJECTION 실습 인증 우회 방법을 통해 로그인 시도 ID : ‘or ‘1’=‘1 PASS : ‘or ‘1’=‘1 예상 입력 쿼리 Userid = ‘’or ‘1’=‘1’ and userpw = ‘’or ‘1’=‘1’;
Blind SQL Injection이란? SQL Injection과 같이 원하는 데이터를 가져올 쿼리를 삽입하는 기술 데이터베이스 메시지가 공격자에 보이지 않을 때 사용 평범한 SQL Injection과 다른점은 일반 SQL Injection은 쿼리를 삽입하여 원하는 데이터를 한번에 얻어내는 방면에 Blind SQL Injection은 참과 거짓, 쿼리가 참 일 때와 거짓을 때 서버의 반응을 보고 데이터를 얻어내는 기술이다.
Thank You