PortSwigger_SQL

Lab: SQL injection vulnerability allowing login bypass

unknown08 2026. 2. 24. 19:07
반응형

[문제]

This lab contains a SQL injection vulnerability in the login function.

To solve the lab, perform a SQL injection attack that logs in to the application as the administrator user.

[풀이 과정]

이 랩은 로그인 폼의 SQL Injection 취약점을 이용해 administrator 계정으로 로그인하는 것이 목표이다

흔히 로그인 폼은 인증우회부터 브루트 포스나 로직 취약점 이용 등등 다양한 공격 포인트가 있다

여기서 우리는 인증우회(쿼리 자체를 조작해서 비밀번호 없이 로그인)를 이용한 침투를 할 것이다

 

간단하게 로그인 폼으로 들어가 administrator'--를 입력해 주면 바로 로그인이 가능하다

[취약점 설명]

이 랩의 서버 내부에선 로그인 처리 쿼리가 아래와 같은 형태로 동작한다고 추측할 수 있다

SELECT * FROM users WHERE username = 'administrator' AND password = '입력값'

이러한 쿼리들은 입력값을 별도로 검증하거나 이스케이프( ' 같은 SQL 특수문자를 일반 문자열로 변환) 처리를 하지 않는다

 

이를 이용하여 administrator'-- 와 같은 SQL 구문을 사용하면 password 검증이 무시되어 로그인이 가능하다

SELECT * FROM users WHERE username = 'administrator'--' AND password = ''

 

[대응방안]

Prepared Statement(파라미터화 쿼리)를 사용해 사용자의 입력값을 SQL 구문으로 해석되지 않도록 처리하게 만든다

Prepared Statement = 쿼리 구조와 데이터(사용자의 입력값 ex) 아이디, 비밀번호)를 따로 전달해 무조건 입력값을 데이터로 인식

 

반응형