bwapp 사례(SQL 삽입 – 블라인드 – 부울 기반)_낮은 수준


bwapp의 블라인드 SQL 인젝션 실습 화면입니다.


쉬운 목차

블라인드 SQL 인젝션

블라인드 SQL 인젝션은 SQL 인젝션의 한 종류로 SQL 인젝션 응답 값이 보이지 않는 값으로 true 또는 false로 반환될 때 발생하는 공격이다.

일종의 20가지 질문이라고 생각하시면 됩니다.

공격자는 결과 출력을 true 또는 false로 확인하고 블라인드 SQL 주입 공격을 수행합니다.

공격자는 Blind SQL 주입을 통해 피해자의 데이터베이스 이름, 테이블 이름, 각 테이블의 열 및 값을 알아낼 수 있습니다.


훈련


‘입력시 출력 오류

입력 필드에 ‘를 입력하면 구문이 올바르지 않다는 오류가 나타납니다.

SQL 인젝션 외에도 오류 기반 SQL 인젝션이 있는데 이 공격도 사용할 수 있을 것으로 보인다.


a 입력시 출력

‘a’를 입력하면 값이 데이터베이스에 존재하지 않는다고 보고됩니다.


1′ 입력시 출력 또는 1=2#

1′ 또는 1=2#를 입력하여 거짓인 경우 출력에 어떤 일이 발생하는지 확인하십시오. 위의 경우와 같이 존재하지 않는다고 보고합니다.


1′ 또는 1=1#

그렇다면 이 시간을 입력하십시오. 1′ 또는 1=1#이 입력되었습니다.

데이터베이스에 존재한다고 명시되어 있습니다.

즉, yes 또는 no(true, false)의 형태로 결과가 반환됩니다.

이로 인해 블라인드 SQL 삽입 공격이 실행될 수 있습니다.

SQL 문을 a 또는 b와 c로 입력하여 a 또는 b를 무조건 참으로 만든 다음 c에서 알고자 하는 값을 찾는 문장을 입력합니다.


데이터베이스 길이

a 또는 b 및 c의 c 부분에 length(database())=n을 입력하여 데이터베이스의 길이가 n인지 쿼리합니다.

데이터베이스 길이는 1이 아닙니다.

수동으로 이 작업을 수행하려면 시간이 오래 걸릴 수 있으므로 Python의 요청 모듈을 사용하여 데이터베이스 길이를 자동으로 결정합니다.