웹해킹

SQL Injection

bbostudyy 2025. 9. 24. 10:14

SQL Injection이란?

대표적인 웹 취약점으로 이 취약점을 통해 공격자가 일반적이지 않은 데이터를 검색해서 볼 수 있다. 대부분은 수정,삭제,콘텐츠와 행동에 지속적인 변화를 일으킨다.

 

공격 기법

- 대부분은 SQL 공격은 SELECT 쿼리의 WHERE절에서 발생함

  • 숨겨진 데이터 가져오기 - SQL 쿼리를 수정하여 결과를 반환하게 만드는 것

ex) - 숨겨진 상품을 입력한 뒤 ' OR 1=1-- 를 입력하면 숨겨진 목록 부분이 주석처리 되면서 무력화되어 숨긴 상품까지 노출됨

      - 'OR 1=1'은 항상 참이기 때문에 모든 상품이 다 출력됨

 

  • 애플리케이션 로직 교환하기

ex) - 취약한 로그인 쿼리에서 admin'-- 를 입력하면 주석처리되면서 아무거나 입력해도 로그인이 가능해짐 → 권한 상승

      - administrator'--를 입력하고 비밀번호를 아무거나 입력하면 비밀번호 검증을 우회할 수 있음

  • UNION 공격 - 공격자는 취약점을 이용하여 데이터베이스 안의 다른 테이블에서 데이터를  가져올 수 있음

ex) - UNION SELECT username, password FROM users-- 를 입력해서 주석처리를 하면 users테이블에서 username과 password 를 가져옴. 이 때 컬럼 수와 데이터 타입이 같아야 함

 

  • 블라인드 SQL Injection - 애플리케이션이 SQL쿼리 결과나 에러 메시지를 응답에 직접 보여주지 않는 것을 의미함

ex) 논리 기반,시간 기반,OAST,대역 외 기법

 

SQL Injection 실습

아무 username과 패스워드를 입력했을 땐 잘못되었다고 뜬다.

burp suite사용하여 administrator'--로 주석처리를 한 뒤 다시 접속해보니

자동으로 로그인되면서 공격을 성공했다.

 

과제

Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data | Web Security Academy

 

Web Application Security, Testing, & Scanning - PortSwigger

PortSwigger offers tools for web application security, testing, & scanning. Choose from a range of security tools, & identify the very latest vulnerabilities.

portswigger.net

lab에 접속해보면 여러 상품 카테고리들이 나온다. 여기에 공개된 상품이 아닌 숨겨진 상품을 보이게 하는 것이 목적인 것 같다.

악세사리 카테고리를 누른뒤 repeater로 확인하였다.

악세사리 뒷부분은 'OR 1=1--로 주석처리한 뒤 요청을 보내니

 

성공하였다.

'웹해킹' 카테고리의 다른 글

Path traversal  (0) 2025.10.28
Command injection  (0) 2025.09.30
[Root Me]HTTP - POST 풀이  (0) 2025.05.28
[Root Me] PHP - Command injection 풀이  (0) 2025.05.28
[Root Me] File upload - MIME type 풀이  (0) 2025.05.28