문제 2번을 풀어보겠다.
500 point나 하는 2번 문제를 클릭해보겠다.
길동이 성님이 젠야타 자세로 반겨준다.
뭐 어쩌라는건지 모르겠다.
이곳저곳을 둘러보자.
별다른 특이 사항이 없지만 Board를 클릭시
게시물 한개가 보이고, 이를 클릭해보니
비밀번호가 걸려있는 상당히 의심스러운 글이다.
한번 해당 비밀번호를 알아내보기위하여 소스코드를 살펴보자.
무엇을 의미하는지 딱히 정확한 정보가 없어서
index홈페이지로 돌아가 소스코드를 찬찬히 살펴본결과
두가지 의심스러운 점을 발견했다.
네비게이션 바의 등록되지 않은 admin이라는 페이지가 있고,
admin이라는 페이지에 접속해보자.
아니나 다를까 어드민페이지에 비밀번호가 걸려있고,
또한 가지 index에서 이상한 점이
시간정보가 주석 처리되어있다.
굳이보여주지 않을 시간정보를 왜주석처리 해놓았을까.
쿠키도 한번 살펴보자
세션은 필요한 정보라 그렇다 치지만 시간정보에 관한 쿠키
time이란 쿠키가 왜 존재하는가?
무언가 의심스럽다.
한번 쿠키값을 이용하여
sql injection을 시도해보겠다.
끝 정보에 and 1=0(false) 조건을 이용하여 대입해본결과
주석 처리된 시간 정보값이
<!--2070-01-01 09:00:00-->
으로 변경되었다.
한번 true(참) 조건으로 쿠키를 다시 변조해보자.
홀리 쓋
정보가 바뀌었다.
<!--2070-01-01 09:00:00-->
이를 통해 한가지 문제풀이 방법을 알아낼 수 있다.
쿼리문을 날려
참이면 <!--2070-01-01 09:00:01--> 해당 정보를 보여주며,
거짓이면 <!--2070-01-01 09:00:00--> 해당 정보를 보여준다.
그렇다면 특정 쿼리문이 참인지 거짓인지 판별할 수 있게 된다.
어떤 정보를 알아내야하는가?
게시물에 해당하는 테이블 정보가 존재할 것이며,
해당 테이블의 비밀번호 또한 알아낼 수 있다.
그렇다면 테이블의 이름을 알아야 하는데, 도저히 테이블의 이름을 알아낼 수가 없어서
검색해본결과
예전에는 두가지 정보를 더 제공했는데,
첫번 째 amdin 페이지의 테이블의 이름은 admin이며
두번 째 게시판의 테이블의 이름은 FreeB0aRd라고 한다.
이제 해당 테이블들의 비밀번호의 길이를 파악해보자.
파이썬을 이용하여 소스코드를 작성해보자.
타 블로그의 소스코드는 python 2버전을 기반으로 작성되어 있으므로 3버전을 기반으로 작성해보았다.
해당 소스코드를 실행하게 되면
admin 테이블의 비밀번호 길이는 10이고, FreeB0aRd 테이블의 비밀번호 길이는 9로 확인된다.
필자 본인이 아무리 삽질을 좋아하지만 비밀번호를 영문자부터 하나하나 대입하는 것은 바보같은 짓이다.
코드를 작성하여 해당 비밀번호의 실제로 무차별 대입(BruteForce)을 이용하여 알아내보자.
실행결과 비밀번호가 나온다.
나름 모자이크 처리한다고 했다.
이제 해당 암호가 걸려있는 홈페이지에 직접 들어가서 확인하여보자.
웹 페이지를 하나 다운받을 수 있다.
하지만 해당파일이 암호화 되어있는 것을 확인할 수 있다.
절망이다.
허나 admin페이지가 남아있다.
해당 홈페이지에 비밀번호를 입력하고 들어가보자.
해당 페이지의 비밀번호가 나와있는 것을 확인하였다.
이제 webhacking.kr의 Auth로 들어간 후 답을 입력한다. (이거 찾느라 고생했다.)
풀이를 완료했다.
'IT > 웹 해킹(Web Hacking)' 카테고리의 다른 글
webhacking.kr [문제 6번] (0) | 2018.02.24 |
---|---|
webhacking.kr [문제 5번] (0) | 2018.02.23 |
webhacking.kr [문제 4번] (0) | 2018.02.23 |
webhacking.kr [문제1번] (0) | 2018.01.27 |
webhacking.kr [회원가입] (0) | 2018.01.27 |