Without a Break

[Dreamhack] SQL Injection 본문

Web/Wargame

[Dreamhack] SQL Injection

와븨 2022. 9. 24. 17:31

Background: Relational DBMS

  • 데이터베이스(Database) : 컴퓨터가 정보를 기록하기 위해 사용
  • DBMS(DataBase Management System) : 데이터베이스를 관리하는 애플리케이션

 

DBMS

  • 데이터베이스에 새로운 정볼르 기록하거나, 기록된 내용을 수정, 삭제하는 역할
  • 다수의 사람이 동시에 데이터베이스에 접근 가능
  • 복잡한 요구사항(ex. 웹 서비스의 검색 기능)을 만족하는 데이터를 조회 가능
  • 관계형 데이터베이스와 비관계형 데이터베이스가 있음
종류 특징
Relational (관계형) 행과 열의 집합인 테이블 형식으로 데이터를 저장
ex)MySQL, MariaDB, PostgreSQL, SQLite
Non-Relational (비관계형) 키-값(Key-Value) 형태로 값을 저장
ex)MongoDB, CouchDB, Redis

 

Relational DBMS

  • 행과 열의 집합으로 구성된 테이블의 묶음 형식으로 데이터를 관리하고, 테이블 형식의 데이털르 조작할 수 있는 관계 연산자를 제공
  • Structured Query Language (SQL) 라는 쿼리 언어를 사용하고, 쿼리를 통해 테이블 형식의 데이터를 조작
  • SQL : DBMS에 데이터를 질의하는 언어로 구조화된 형태를 가지고, 웹 어플리케이션이 DBMS와 상호작용할 때 사용됨
언어 설명
DDL
(Data Definition Language)
데이터를 정의하기 위한 언어.
데이터를 저장하기 위한 스키마, 데이터베이스의 생성/수정/삭제 등의 행위를 수행함
DML
(Data Manipulation Language)
데이터를 조작하기 위한 언어.
실제 데이터베이스 내에 존재하는 데이터에 대해 조회/저장/수정/삭제 등의 행위를 수행함
DCL
(Data Control Language)
데이터베이스의 접근 권한 등의 설정을 하기 위한 언어.
데이터베이스 내에 이용자의 권한을 부여하기 위한 GRANT와 권한을 박탈한느 REVOKE가 대표적임

 

 


 

ServerSide: SQL Injection

  • SQL Injection : DBMS에서 사용하는 쿼리를 임의로 조작해 데이터베이스의 정보를 획득하는 기법
  • 인젝션(Injection) 공격 : 이용자의 입력값이 애플리케이션의 처리 과정에서 구조나 문법적인 데이터로 해석되어 발생하는 취약점
  • Blind SQL Injection : 질의 결과를 이용자가 화면에서 직접 확인하지 못할 때 참/거짓 반환 결과로 데이터를 획득하는 공격 기법

 

Blind SQL Injection

  • 데이터베이스 조회 후 결과를 직접적으로 확인할 수 없는 경우 사용할 수 있는 SQL Injection 공격 기법
  • 한 비트씩 비교하여 공격하는 방식으로 다른 공격에 비해 많은 시간을 들여야함 => 공격을 자동화하는 스크립트를 작성하여 해결
함수 특징
ascii 전달된 문자를 아스키 형태로 반환하는 함수
substr 문자열에서 지정한 위치부터 길이까지의 값을 가져옴

 

'Web > Wargame' 카테고리의 다른 글

[Dreamhack] Mango  (0) 2022.10.01
[Dreamhack] simple_sqli  (0) 2022.09.24
[Dreamhack] csrf-2  (0) 2022.09.24
[Dreamhack] csrf-1  (0) 2022.09.24
[Dreamhack] ClientSide: CSRF  (0) 2022.09.21