webhacking.kr 사이트의 1번 문제
1번 문제에 들어가 보면 위와 같은 화면이 나타난다.
뭔지 모르겠지만 일단 index.phps를 열어보자.
주소창 끝에 index.phps를 입력하면 아래와 같이 나타난다.
코드를 보니 user_lv 라는 이름의 쿠키 값을 1로 설정한다.
중간에 있는 if 문을 보면 eregi 함수로 문자열을 비교한다.
eregi("[^0-9],.", $_COOKIE[user_lv]) 이 함수의 의미는 user_lv에 있는 값을 0~9 까지의 숫자와 .( dot ) 을 제외한 모든 문자열과 비교한다는 의미이며 이 값이 True이면 user_lv 값을 1로 설정한다.
두 번째 if문을 보면 user_lv 값이 6 이상이면 user_lv 값을 1로 설정한다.
마지막 if 문을 보면 user_lv 값이 5보다 크면 solve() 함수를 호출하는 것을 볼 수 있다.
즉 우리가 해야 할 것은 5 보다 크고 6보다 작은 수를 user_lv 값에 넣어야 한다는 것이다.
이를 위해 프록시를 이용한다. 필자는 burpsuite를 사용한다.
먼저 burpsuite를 실행한다.
proxy 탭에 가보면 위와 같은 화면이 나타난다. Intercept is on 이라고 되어 있으면 프록시가 동작하는 것이다.
options 탭에 들어가서 Intercept Server Responses 부분에도 체크를 해준다.
그러면 서버에서 응답해주는 것까지 받아올 수 있다.
burpsuite 설정을 하고나서 이제 브라우저에서 프록시를 사용하도록 설정해야 한다.
필자는 Safari를 이용하기 때문에 Safari 환경설정에 들어가 프록시를 설정해 준다.
보통 프록시의 포트는 8080으로 설정한다.
프록시 설정할 때 기본적으로 local domain에 대해서 예외를 설정하는데 이 부분을 제거해 주어야 한다.
* 다른 브라우저를 사용할 경우 해당 브라우저의 설정에 들어가 네트워크 관련된 부분을 보면 프록시 설정을 할 수 있는 설정창이 나타난다.
설정이 완료된 후 webhacking 1번 문제 페이지를 새로고침 하면 burpsuite에서 다음과 같은 화면을 볼 수 있다.
3번 째 줄에 보면 user_lv=1 로 되어 있는데 이 부분을 5.x 로 설정하고 intercept is on을 클릭하게 되면 다음과 같이 1번 문제를 풀었다는 메시지를 확인할 수 있다.
* 여기서 x는 원하는 숫자를 쓰면 된다. 앞서 코드를 분석했을 때 숫자와 .( dot )은 첫 번째 if 문에서 걸리지 않기 때문에 소수점을 이용해 5와 6사이의 값을 설정할 수 있다.
'Wargame > webhacking' 카테고리의 다른 글
[webhacking.kr] 6번 문제 (0) | 2017.05.02 |
---|---|
[webhacking.kr] 5번 문제 (0) | 2017.05.02 |
[webhacking.kr] 4번 문제 (0) | 2017.05.02 |
[webhacking.kr] 3번 문제 (0) | 2017.05.02 |
[webhacking.kr] 가입하기 (0) | 2017.05.01 |