카테고리 없음

[250211] Webhacking - SQL

jisu0924 2025. 2. 11. 23:57

Database Management System (데이터베이스 관리 시스템)

  • 데이터에 새로운 정보를 기록
  • 기록된 내용을 수정/삭제
  • 다수의 사람이 동시에 데이터베이스에 접근 가능
  • 복잡한 요구사항을 만족하는 데이터를 조회 가능
종류
대표적 DBMS
Relational
(관계형)
MySQL, MariaDB, PostgreSQL, SQLite -> 행과 열의 집합인 테이블 형식으로 데이터를 저장
Non-Relational
(비관계형)
MongoDB, CouchDB, Redis -> 키-값 형태로 값 저장

 

Relational DBMS

  • 행과 열의 집합으로 데이터를 관리 
  • 테이블 형식의 데이터를 조작할 수 있는 관계 연산자 제공
  • Structured Query Language (SQL) 라는 쿼리 언어를 사용 -> 쿼리를 통해 테이블 형식의 데이터를 조작

SQL

  • RDBMS의 데이터를 정의하고 질의/수정하기 위해 고안된 언어
  • 구조화된 형태를 가지는 언어
  • 웹 어플리케이션이 DBMS와 상호작용할 때 사용
     

     

    언어
    설명
    DDL
    (Data Definition Language)
    데이터를 정의하기 위한 언어. 데이터를 저장하기 위한 스키마, 데이터베이스의 생성/수정/삭제 등의 행위를 수행
    DML
    (Data Manipulation Language)
    데이터를 조작하기 위한 언어. 실제 데이터베이스 내에 존재하는 데이터에 대해 조회/저장/수정/삭제 등의 행위를 수행.
    DCL
    (Data Control Language)
    데이터베이스의 접근 권한 등의 설정을 하기 위한 언어 ->
    1. 데이터베이스 내에 이용자의 권한 부여하기 위한 GRANT
    2. 권한 박탈하는 REVOKE가 대표적

 

DDL

RDBMS에서 사용하는 기본적인 구조 : 데이터베이스 → 테이블 → 데이터 구조

데이터를 다루기 위해 데이터베이스와 테이블을 생성해야 함 -> DDL 사용

 

DDL의 CREATE 명령 -> 새로운 데이터베이스 또는 테이블 생성

 

DML

생성된 테이블에 데이터를 추가하기 위해 사용

  • 새로운 데이터를 생성하는 INSERT
  • 데이터를 조회하는 SELECT
  • 데이터를 수정하는 UPDATE

SQL Injection

웹 서비스 -> 이용자의 입력을 SQL 구문에 포함해 요청하는 경우가 있음

 

이용자가 SQL 구문에 임의 문자열을 삽입하는 행위 => SQL Injection

SQL Injection이 발생하면 조작된 쿼리로 인증 우회 / 데이터베이스의 정보 유출 가능

 

Blind SQL Injection

의도하지 않은 결과를 반환해 인증을 우회하는 것 -> 데이터베이스의 데이터를 알아낼 수 있음

=> 이때 사용하는 공격 기법이 Blind SQL Injection

 

질의 결과를 이용자가 화면에서 확인 못할 때 참/거짓 반환 결과로 데이터를 획득하는 공격 기법