15번 문제를 눌러보았다.

이런 화면이 뜨고, 확인을 누르면 다시 webhacking.kr 화면으로 돌아간다.

아무래도 페이지 소스코드를 봐야 할 것 같다. 그렇지만 alert가 떠 있는 상태에서는 페이지 소스보기를 할 수 없다.

이때 소스코드를 보는 방법은 2가지가 있다.

 

첫번째 방법은 자바스크립트를 꺼버리는 것이다.

크롬을 사용하고 있으니 크롬을 기준으로 설명하겠다. 크롬 설정을 들어간 후 고급 설정을 클릭한다.

그리고 개인 정보의 콘텐츠 설정을 클릭하면 자바스크립트 항목을 확인할 수 있다. 그 중 모든 사이트에서 자바스크립트 허용 안함에 체크한 후 완료를 누르고 페이지를 새로고침 한다.

그 후 문제를 다시 눌러보자.

자바스크립트가 실행되지 않아 아무 창도 뜨지 않은 화면을 볼 수 있다.

여기서 페이지 소스보기를 해 보자.

다음과 같이 15번 문제의 소스가 나온 것을 볼 수 있다.

history.go(-1);이 실행되면 이전 페이지로 돌아가게 된다. 그래서 페이지 소스를 볼 수 없었다.

그리고 password is off_script를 보아 비밀번호가 off_script라는 것을 알 수 있다.

 

두번째 방법은 url을 이용하는 것이다.

처음 15번 문제를 실행했을 때 url을 유심히 보자.

이 url을 외워 두자

url앞에 view-source: 를 입력하면 자바스크립트가 실행되지 않고 페이지 소스를 볼 수 있다.

새 인터넷 창에 다음과 같이 입력해보자!

그러면 페이지의 소스가 나와 아까같이 비밀번호를 확인할 수 있다.

 

그럼 이제 알아낸 비밀번호를

이 중 auth를 눌러 입력하면 된다.

문제를 이미 풀어 다음과 같은 창이 뜬 것을 볼 수 있다.

 
 
 

'워게임 > webhacking.kr' 카테고리의 다른 글

webhacking.kr 18번  (1) 2016.09.01
webhacking.kr 16번  (0) 2016.09.01
webhacking.kr 4번  (0) 2016.09.01
Webhacking.kr 39번  (1) 2016.07.10
Webhacking.kr 1번  (7) 2016.07.07

여기 index.phps에 진입한다.

다음과 같은 소스코드가 나오는데, 이 중 php문을 해석해 보자.



if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1;


먼저, eregi함수는 문자를 찾는 함수이다. $_COOKIE[user_lv] 변수가 0~9사이의 숫자와 마침표를 제외한 다른 문자이면 1 반환한다.

, 0~9사이의 숫자와 마침표를 제외한 숫자가 $_COOKIE[user_lv] 들어가 있으면 조건문이 실행되어 $_COOKIE[user_lv] 1 초기화된다.


if($_COOKIE[user_lv]>=6$_COOKIE[user_lv]=1;

 

조건문에서는 쿠키 레벨이 6보다 크면 $_COOKIE[user_lv] 1 초기화시킨다.



if($_COOKIE[user_lv]>5) @solve();

 

조건문을 보면, $_COOKIE[user_lv] 5보다 크면 solve();함수가 발동되는 것을 확인할 있다. @ 에러가 나도 에러 내용을 출력하지 않는다는 뜻이다.


따라서 0~9사이의 문자와 마침표 문자가 포함될 있는 6보다 크지 않고 5보다 문자로 쿠키를 변조해 주면 된다. 문자를 5.5 잡고 보았다.

크롬의 EditThisCookie 설치하여 쿠키값을 5.5 변조해 주었다.

그러자 문제가 풀렸다. 이미 문제를 풀어 다음과 같은 화면이 나온 것을 있었다.

'워게임 > webhacking.kr' 카테고리의 다른 글

webhacking.kr 18번  (1) 2016.09.01
webhacking.kr 16번  (0) 2016.09.01
webhacking.kr 4번  (0) 2016.09.01
Webhacking.kr 39번  (1) 2016.07.10
Webhacking.kr 15번  (0) 2016.07.08

+ Recent posts