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글자를 하나씩 다 해보기는 힘드므로,

파이썬을 사용하였다.


 findPW.py

(참고 : 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

+ Recent posts