Gae Ko's Blog

[webhacking.kr] challenges16 본문

웹해킹 /[webhacking.kr]

[webhacking.kr] challenges16

Gae Ko 2017. 9. 25. 04:13

문제를 보니 



이상하게 생긴 이 별은... 뭘까 ㅎ


무튼 소스코드를 열어 보았다.



뭐가 되게 많다.... 어려워 보인다.... 

소스코드 분석에 앞서서 모르는 코드들이 너무 많았다. ㅠㅠ

모르는 코드 하나하나 다 찾아보면서 우연찮게 문제페이지에서 키보드를 누르면 누른대로 오색달록한 *이 입력된다는 것도 알게 되었다.

이게 뭔 일일까.... 다시 코드분석하다가 이건 아니다 싶어서 중간부분을 쓰윽 보는데 

17줄에서 cd가 124일 때, 어디론가로 페이지가 넘어간다는 것을 알 수 있었다. (location.href="이동할 주소")

페이지가 넘어간다니까 그 페이지에서 뭔가 답이 나올거 같았다.

 

일단 아까 모르던 소스코드에서 구글링한 것들 중에서 17줄을 이해하는데 필요한 정보만 나열해보겠다.

- onkeypress 는 키보드이벤트로 키보드누른 문자가 출력시 이벤트가 발생

- event.keyCode 는 하나의 '값'인데 자바스크립트에서 키보드 이벤트를 받았을 때 키 값을 keycode( ASCII코드)목록으로 구별하게 된다.

- String.fromCharCode()함수는 자바스크립트에서 여러 개의 유니코드 문자값을 문자열로 반환해주는 함수 


코드 4줄을 보니 <body>영역에 대해서 onkeypress 키보드이벤트가 설정되어있는데 event.keyCode값을 키보드로 누르면 함수 mv()가 그 값에 대해서 실행된다는 것을 알 수 있다. 

그리고 함수mv()에 대한 코드중 17줄을 보니  cd값이 124이면 "/String.fromCharCode(124)"로 페이지 이동한다고 한다. 

즉, 키보드로 어떠한 값을 키보드로 눌러서 그 값의 아스키코드 값이 124이면 해당페이지로 넘어간다는 뜻이다.


그렇다면 아스키코드값이 124인 문자열이 무엇인지 찾아봐야한다.

콘솔창에서 String.fromCharCode()함수를 이용해 쉽게 구할 수 있다.



이제 문제페이지에서 키보드로 "|"를 눌러야함을 알게 되었으므로 눌러본다!

다음과 같이 페이지가 이동하여 password가 무엇인지 알려준다!! 


플래그값으로 webhacking.kr 을 입력하고 제출하면



Clear!!!


[질문]

 location.href=String.from.Code(124)에서부터 넘어갈 페이지의 url을 알 수 있으므로 String.from.CharCode(124)를 구하여 바로 주소창에 입력하면 되지 않을까하여 해보았다.

 


그랬더니 

이상한 페이지로 넘어가버렸다. ㅠㅠ 


생각해보니 location.href를 사용할 때 지금까지 봐온 형태는 location.href="이동할 페이지url" 처럼 큰따옴표안에 url이 들어가 있는 형태인데 이 문제에서는 큰따옴표가 없는 형태로 좀 달라서 내 예상과 다른 결과가 나온거 같았다. 


그렇다면 문제의 소스코드에 있는 location.href=String.fromCharCode(cd) 는 무슨 뜻인 것이죠?? ㅠㅠ 


[답변]

주소창에 | 를 입력해도 된다. 

다만 location.href를 이용해서 javascript/js3.html(현재 파일 위치)에서 javascript 디렉토리 내의 %7c 라는 파일로 이동하는 것이기 때문에 기존 url인 js3.html을 지워줘야 한다. 


location.href="~~"에서  ~~가 파일의 경로를 의미한다.

예를 들어 ~~에 ./code/test.php 라고 하면, 지금 현재 보고 있는 페이지의 코드가 있는 경로 기준으로 같은 경로에 있는 code 디랙토리 아래의 test.php 파일로 이동해라 라는 의미이다. 


근데 이 문제에서 처럼 location.href=String.fromCharCode(124) 같이 바로 이동할 수 있는 이유는 

문제 출제자가 현재 보고있는 페이지의 코드와 같은 디렉토리에 %7c 라는 이름의 파일을 생성해놨기 때문이다. 


이해하기 쉽게 예시를 들자면, 리눅스에서 ls 하면 현재 내가 있는 경로의 모든 파일 목록이 나오는데


내가 현재 문제를 풀고 있는 페이지가 index.php 라고 한다면 %7c 라는 파일은 blahalaf 라는 파일을 의미한다. 

즉, location.href="~~"에서 ~~자리에는 파일의 경로가 들어가기때문에 인터넷 url이 들어갈 수 있고 서버안에 있는 파일의 경로가 될 수도 있다.







'웹해킹 > [webhacking.kr] ' 카테고리의 다른 글

[webhacking.kr] challenges10  (0) 2017.10.13
[webhacking.kr] challenges12  (0) 2017.09.25
[webhacking.kr] challenges14  (0) 2017.09.25
[webhacking.kr] challenges17  (0) 2017.09.18
[webhacking.kr] challenges15  (0) 2017.09.18