Challenge 9 시작!
900점 문제이다! 난이도가 꽤 있을 것 같다.
패스워드를 알아내는 문제이다!
일단 보여지는 페이지는 no 값에 따라 총 5가지였다.
no 가 1,2,3 일 때는 각각의 id 가 있고 no가 3인 id 가 pw 값이라고 나와있다.
no가 0일 때가 메인 페이지이고 나머지 숫자일 때는 다음과 같이 패스워드 입력폼만 띄워준다.
SQL Injection 을 이용하는 문제라고 생각하여 문자들을 몇 개 입력해보니 다음과 같이 필터링 되어있는 값들이 존재한다는 것을 알 수 있었다.
필터링되지 않은 문자들을 이용하여 pw를 찾아내야 한다.
'Password' 라는 문자열이 no 가 3일 때는 출력되지 않는 점을 이용하여 Blind SQL Injection 을 시도하였다.
if 문을 통해 id 값을 알아내는 쿼리를 작성할 수 있는데 다행히 if 가 필터링되어 있지 않았다.
아래의 Python 코드를 작성하여 pw인 id 값을 검색해보았다.
substr 을 통해 각 id 자리값을 발견했을 때 no 가 0이 되게 하여 'Password' 문자열이 출력되도록 하였다.
0이 아니라 다른 어떤 숫자던 상관없다. 3만 거짓일 때 선택되도록 해주면 된다.
ALSRKSWHAQL 이라는 패스워드 값을 얻을 수 있었다.
Mysql 에서는 대소문자를 구분하지 않지만 WAS 인 php 에서는 대소문자를 구분하기 때문에
패스워드가 소문자일 수도 있다.
소문자였다!
성공!!
'WarGame > webhacking.kr' 카테고리의 다른 글
Challenge 44 (0) | 2020.02.15 |
---|---|
Challenge 10 (0) | 2020.02.15 |
Challenge 8 (0) | 2020.02.14 |
Challenge 7 (0) | 2020.02.14 |
Challenge 5 (0) | 2020.02.08 |