❓ 공격 개요
Blind SQL Injection 공격 개요
Blind SQL Injeciton 공격은 공격자가 공격을 받은 데이터 베이스로부터 명백한 응답을 받지 않고 대신 데이터 베이스 서버와 애플리케이션의 동작을 관찰하여 데이터베이스 구조를 단계별로 재구성하는 SQL Injection 의 한유형이다
Blind SQL Injeciton 공격 방법에는 Boolean-based , Time-based 공격이 있다
💻 실습

Blind SQL Injection 의 메인화면이다
SQL Injection 과 같이 유저아이디를 입력하는 창이 있다
1 을 입력해보자

SQL Injection 과 달리 데이터가 조회되지않고 존재한다고만 출력된다
에러를 발생시키기위해 ' 를 입력해보자

' 을 입력하자 데이터베이스에 존재하지 않는다고만 나오고
에러도 출력되지 않는다
에러가가 발생하지 않도록 처리하는 루틴이 구현되있음을 추측해볼 수 있다.
즉
데이터베이스에 존재하는 정상적인 ID 값이 입력되면 존재한다는 메시지가 출력되고,
데이터 베이스에 존재하지 않거나 비정상적인 ID값이 입력되면 존재하지 않는다는 메시지가 출력된다
별다른 에러가 발생하지 않으니 폼을 처리할때 SQL 쿼리문이 사용되는지 쉽게 알 수가 없다
또한 만약 SQL 쿼리문이 사용되었더라도 그결과가 단지 사용자의 존재유무만 출력되기에
쉽게 정보를 조회하기 어렵다
하지만 입력값에 따라 사용자의 존재 유무로 다른 결과가 나타난다면 Blind Injeciton 공격을 시도해 볼 수 있다.
이제 and 와 그 뒤에 1=1이라는 항상 참이 되는 조건을 추가하여 1' and 1=1# 을 입력해보자

사용자의 ID가 존재한다고 출력되었다 이것으로
and 이하 구문이 SQL 쿼리문 내에서 처리된것을 확인할 수 있다
이와같이 and 등과 같은 연산이 실행되어 참과 거짓에 따라 그 결과가 다르게 구분되어 출력되는다는것은
Blind Injection 취약점을 의심해 볼 수 있다.
또한 위의 예시와 같이 참/거짓에 따라 출력값이 다르게 출력되는 경우도 있지만
어떤 경우에는 웹사이트에 출력되는 메시지가 아예 없을 수도 있는데
이경우
and 와 sleep 키워드를 이용하여 참일 경우 응답을 몇초 늦게 오도록 만들어 판단도 가능하다

1' and sleep(5)# 을 입력하자 5초정도 늦게 응답이 온것을 알수 있다
결과 값이 참일때는 5초의 딜레이가 발생하고
결과 값이 거짓일때는 딜레이가 발생하지 않는다
🔍 대응방안
SQL Injection 대응방안과 동일
'Web Hacking > DVWA' 카테고리의 다른 글
[DVWA] - XSS(DOM) (0) | 2022.11.18 |
---|---|
[DVWA] - Weak Session IDs (0) | 2022.11.14 |
[DVWA] - SQL Injection (0) | 2022.11.12 |
[DVWA] - Insecure CAPTCHA (0) | 2022.11.09 |
[DVWA] - File Upload (0) | 2022.11.08 |
❓ 공격 개요
Blind SQL Injection 공격 개요
Blind SQL Injeciton 공격은 공격자가 공격을 받은 데이터 베이스로부터 명백한 응답을 받지 않고 대신 데이터 베이스 서버와 애플리케이션의 동작을 관찰하여 데이터베이스 구조를 단계별로 재구성하는 SQL Injection 의 한유형이다
Blind SQL Injeciton 공격 방법에는 Boolean-based , Time-based 공격이 있다
💻 실습

Blind SQL Injection 의 메인화면이다
SQL Injection 과 같이 유저아이디를 입력하는 창이 있다
1 을 입력해보자

SQL Injection 과 달리 데이터가 조회되지않고 존재한다고만 출력된다
에러를 발생시키기위해 ' 를 입력해보자

' 을 입력하자 데이터베이스에 존재하지 않는다고만 나오고
에러도 출력되지 않는다
에러가가 발생하지 않도록 처리하는 루틴이 구현되있음을 추측해볼 수 있다.
즉
데이터베이스에 존재하는 정상적인 ID 값이 입력되면 존재한다는 메시지가 출력되고,
데이터 베이스에 존재하지 않거나 비정상적인 ID값이 입력되면 존재하지 않는다는 메시지가 출력된다
별다른 에러가 발생하지 않으니 폼을 처리할때 SQL 쿼리문이 사용되는지 쉽게 알 수가 없다
또한 만약 SQL 쿼리문이 사용되었더라도 그결과가 단지 사용자의 존재유무만 출력되기에
쉽게 정보를 조회하기 어렵다
하지만 입력값에 따라 사용자의 존재 유무로 다른 결과가 나타난다면 Blind Injeciton 공격을 시도해 볼 수 있다.
이제 and 와 그 뒤에 1=1이라는 항상 참이 되는 조건을 추가하여 1' and 1=1# 을 입력해보자

사용자의 ID가 존재한다고 출력되었다 이것으로
and 이하 구문이 SQL 쿼리문 내에서 처리된것을 확인할 수 있다
이와같이 and 등과 같은 연산이 실행되어 참과 거짓에 따라 그 결과가 다르게 구분되어 출력되는다는것은
Blind Injection 취약점을 의심해 볼 수 있다.
또한 위의 예시와 같이 참/거짓에 따라 출력값이 다르게 출력되는 경우도 있지만
어떤 경우에는 웹사이트에 출력되는 메시지가 아예 없을 수도 있는데
이경우
and 와 sleep 키워드를 이용하여 참일 경우 응답을 몇초 늦게 오도록 만들어 판단도 가능하다

1' and sleep(5)# 을 입력하자 5초정도 늦게 응답이 온것을 알수 있다
결과 값이 참일때는 5초의 딜레이가 발생하고
결과 값이 거짓일때는 딜레이가 발생하지 않는다
🔍 대응방안
SQL Injection 대응방안과 동일
'Web Hacking > DVWA' 카테고리의 다른 글
[DVWA] - XSS(DOM) (0) | 2022.11.18 |
---|---|
[DVWA] - Weak Session IDs (0) | 2022.11.14 |
[DVWA] - SQL Injection (0) | 2022.11.12 |
[DVWA] - Insecure CAPTCHA (0) | 2022.11.09 |
[DVWA] - File Upload (0) | 2022.11.08 |