카테고리 없음

boolean based, time based sql injection이란

3o23 2024. 9. 8. 23:46

Boolean-Based SQL Injection이란

쿼리의 결과를 참과 거짓만 출력하는 페이지에서 사용하는 공격이다

출력 내용이 참과 거짓 밖에 없기 때문에 데이터베이스의 내용을 추측한다.

예를 들어 
SELECT * FROM Users WHERE UserID = 1 AND 1=1; <<<<<<참
SELECT * FROM Users WHERE UserID = 1 AND 1=2; <<<<<<거짓
위 두 코드를 보면 첫 번째 쿼리는 1=1이 참이므로 데이터가 반환된다. 그러나

반면에 두 번째 쿼리는 1=2가 거짓이므로 데이터가 반환되지 않는다. 이러한 

차이를 이용해 공격자는 데이터베이스 구조를 추측할 수 있다.

Time Based SQL Injection 도 마찬가지로 서버로부터 특정한 응답 대신에

참 혹은 거짓의 응답을 통해서 데이터베이스의 정보를 유추하는 기법이다.

공격자는 시간 지연을 통해 쿼리의 참/거짓 여부를 판단하고 정보를 추출할 수 있다.

예를 들어

SELECT * FROM Users WHERE UserID = 1; <<<<일반적인경우
SELECT * FROM Users WHERE UserID = 1 AND IF(1=1, SLEEP(5), 0); <<참인경우

위 두 코드를 보면 두 번째 쿼리에서는 1=1이 참이므로 SLEEP(5)가 실행되어

데이터베이스가 5초 동안 응답을 지연시킨다.

 

요약하면

Boolean-Based SQL Injection: 참/거짓 조건을 사용하여 결과를 분석하는 기법.

Time-Based SQL Injection: 데이터베이스의 응답 시간을 측정하여 결과를 추론하는 기법.