http://webhacking.kr/challenge/web/web-02/
메인 페이지의 소스코드를 먼저 확인해 보았다.
페이지에서 볼 수 없었던 admin 페이지와
주석처리된 시간이 나와있다.
메인페이지에서 용을 누르거나
http://webhacking.kr/challenge/web/web-02/admin/ 주소로 들어가면,
로그인 할 수 있는 페이지가 나온다.
SQL Injection을 시도했지만, ...ㅠㅠ
페이지를 더 살펴보다보니 FreeB0aRd라는 BOARD 페이지에 비밀글이 남겨져 있었다.
여기서도 SQL Injection을 시도했지만, ...ㅠㅠ
(https://www.epochconverter.com/)
그러다 쿠키를 확인해봤는데,
메인 페이지 소스코드에서 주석처리된 시간 값과 같은 time 쿠키가 있었다.
이를 이용해 Blind SQL Injection 취약점이 있는지 확인해보았다.
(Blind SQL Injection이란, 쿼리가 참과 거짓일 때 서버의 반응을 이용해 SQL Injection을 수행하는 것이다.)
거짓일 경우(1=0), 소스 코드와
참일 경우(1=1), 소스코드가 다른 것을 확인할 수 있다.
이를 이용해 BOARD과 admin 페이지의 비밀번호를 알아내보자.
BOARD 페이지의 테이블명은 FreeB0aRd
admin 페이지의 테이블명은 admin으로 시도해 보았다.
1500002895 and (select length(password) from FreeB0aRd) = 9
1500002895 and (select length(password) from admin) = 10
위와 같이 비밀번호의 길이를 알아내었다.
비밀번호는 다음과 같은 코드로
Blind SQL Injection을 통해 알아낸다.
1500002895 and (select ascii(substring(password,1,1)) from FreeB0aRd = 48 1500002895 and (select ascii(substring(password,1,1)) from admin = 65 |
9글자/10글자를 하나씩 다 해보기는 힘드므로,
파이썬을 사용하였다.
(참고 : http://dosnipe.tistory.com/67)
두 테이블의 비밀번호를 얻었다.
FreeB0aRd 테이블의 비밀번호 값으로 비밀글을 확인하면,
압축 파일을 얻을 수 있다.
압축을 풀려고 하니 비밀번호를 입력하라고 했다.
admin 테이블의 비밀번호 값으로 페이지에 로그인 해보니,
압축 파일 비밀번호가 나와있었다.
압축 파일에 들어있던 .html 파일을 열어보니 패스워드가 나왔고
이 패스워드를 http://webhacking.kr/index.php?mode=auth 사이트에 입력하면 된다.
'문제풀이 > webhacking.kr' 카테고리의 다른 글
webhacking.kr - 5번 (0) | 2017.08.01 |
---|---|
webhacking.kr - 4번 (0) | 2017.07.31 |
webhacking.kr - 3번 (0) | 2017.07.31 |
webhacking.kr - 1번 (0) | 2017.07.31 |
webhacking.kr - 회원가입 (0) | 2017.07.31 |