본문 바로가기
해킹&보안/웹

[Writeup] SQL Injection

본 블로그는 학습용입니다. 명시적 동의 없는 시스템 접근·정보수집은 불법이며 형사·민사 책임이 따릅니다.
실습은 격리된 테스트 환경에서만 허용됩니다. (형법·정보통신망법·정보통신기반보호법 등

1. 주제

SQL Injection(SQLi) 취약점의 기본 원리를 다룹니다. SQL Injection은 공격자가 웹 애플리케이션의 입력 값에 악의적인 SQL 쿼리 구문을 삽입하여 데이터베이스를 비정상적으로 조작하는 기본적이면서도 치명적인 공격 기법입니다. 실제 CTF 문제에 어떻게 적용되는지 확인함으로써 웹 보안의 기초를 다지는 것을 목표로 합니다.

 

주제: SQL Injection

핵심 요약: 사용자의 입력을 서버가 충분히 검증하지 않고 동적 SQL 쿼리를 생성할 때 발생하는 취약점으로 인증을 우회하고 데이터베이스의 정보를 탈취할 수 있습니다


2. 정의 및 작동 원리

2.1. 상세 정의

SQL Injection이란 공격자가 웹 애플리케이션의 로그인 폼, 검색창 등 사용자가 값을 입력할 수 있는 곳에 임의의 SQL 코드를 삽입하여 서버의 데이터베이스를 공격하는 기법입니다. 만약 서버가 입력된 값을 안전하게 처리하지 않고 그대로 쿼리문의 일부로 사용한다면, 공격자가 의도한 악의적인 쿼리가 실행됩니다. 데이터베이스의 정보가 유출, 변조, 삭제되거나 서버의 인증 절차를 우회하는 등 심각한 보안 사고로 이어질 수 있습니다.

 

2.2. 원리
https://shsecurity1.tistory.com/166

 

SQL 인젝션

본 블로그는 학습용입니다. 명시적 동의 없는 시스템 접근·정보수집은 불법이며 형사·민사 책임이 따릅니다. 실습은 격리된 테스트 환경에서만 허용됩니다. (형법·정보통신망법·정보통신기

shsecurity1.tistory.com

위 글을 참고하면 될 것 같습니다


3. 시나리오 및 실습 환경 

3.1. 목표

웹 페이지 로그인 기능에 존재하는 SQL Injection 취약점으로 인증을 우회하고 데이터베이스 내에 숨겨진 Flag 값을 획득한다.

 

3.2. 실습 환경

Target: picoCTF "SQLiLite" Challenge

Tool(s): 웹 브라우저 (Chrome, Firefox 등)


4. 분석 및 공격 절차

4.1. [1단계: 정보 수집 및 분석]

문제 페이지에 접속하면 간단한 로그인 폼이 나타납니다. 우선 가장 기본적인 SQL Injection 인증 우회 구문을 테스트하여 취약점 존재 여부를 확인합니다.

 

4.2. [2단계: 취약점 발견 및 테스트]

ID와 비밀번호 입력창에 admin을 넣어보고 어떤 결과가 나오는지 확인합니다

  • Username: admin
  • Password: admin

 

4.3. [3단계: 공격 수행 및 목표 달성]

sql 인젝션하면 자주 나오는 SQL 인젝션 테스트 구문인 ' or 1=1;-- 을 Username에 넣고 Password에는 아무 값을 넣어줬습니다

로그인은 되었고 flag는 바로 보이지 않아서 페이지 소스코드 확인했습니다

 

페이지 소스코드에서 플래그를 확인할 수 있었습니다

 

참고

OWASP Top 10: A03:2021-Injection

PortSwigger Web Security Academy: SQL Injection

'해킹&보안 > ' 카테고리의 다른 글

Command-injection  (0) 2025.10.19
[Writeup] Forbidden Paths  (0) 2025.10.12
CSRF 취약점 A to Z  (0) 2025.09.30
세션 기반 인증과 JWT 토큰 기반 인증  (0) 2025.09.27
피싱 - 로그인 정보가 그대로 해커에게?  (0) 2025.09.22