Sqlinjection.
title: 2025-11-26 (날짜) author: 강병호 (이름) date: 2025-11-26 (날짜) category: TIL/강병호/2025/11 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —
SQLInjection
웹 애플리케이션의 입력단(로그인, 검색 등)에 악의적인 SQL 구문을 삽입해 데이터베이스를 조작하는 공격 기법이다. 주로, 개발자가 사용자의 입력을 검증 없이 쿼리를 전달할 때 발생한다.
이는 DB 엔진이 사용자의 입력을 단순한 데이터가 아닌 실행해야 할 명령어로 착각하게 만든다.
-- 개발 의도: ID와 PW를 검사
SELECT * FROM Users WHERE id = '$input_id' AND password = '$input_pw';
-- 공격자 입력 (input_id): ' OR '1'='1
-- 실제 실행되는 쿼리 (항상 참이 됨)
SELECT * FROM Users WHERE id = '' OR '1'='1' --' AND password = '...';
- 공격자의 입력 ‘ OR ‘1’=’1
- 문제 쿼리
id = ''를 통해 개발자가 새엇ㅇ한 따옴표와 짝을 맞추며 닫힌다. 이를 통해 id 값을 빈 문자열로 받아들임OR를 통해 뒤에 오는 글자들을 명령어로 인식하여 앞의 조건이 틀려도 뒤의 조건이 맞기에 통과시킴- 이를 통해 첫 번째 회원 정보를 가져오게 되는 문제로 비밀번호를 몰라도 로그인이 될 수 있음.
- 주석을 통한 비밀번호 삭제