일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- select()
- sample_n()
- filter()
- arrange()
- AES
- samp;e_frac()
- mutate()
- distinct()
- summarize()
- proc contents
- 대칭형 알고리즘
- groupe_by()
- dplyr
- Today
- Total
Gae Ko's Blog
[webhacking.kr] challenges16 본문
문제를 보니
이상하게 생긴 이 별은... 뭘까 ㅎ
무튼 소스코드를 열어 보았다.
뭐가 되게 많다.... 어려워 보인다....
소스코드 분석에 앞서서 모르는 코드들이 너무 많았다. ㅠㅠ
모르는 코드 하나하나 다 찾아보면서 우연찮게 문제페이지에서 키보드를 누르면 누른대로 오색달록한 *이 입력된다는 것도 알게 되었다.
이게 뭔 일일까.... 다시 코드분석하다가 이건 아니다 싶어서 중간부분을 쓰윽 보는데
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 |