본문 바로가기
작업/Webhacking.kr

webhacking.kr old-16 이해하기

728x90

 

old-16 100pt 문제의 해결을 시작하겠습니다.

 

 

페이지에 들어가면 별이 찍혀있는 것을 확인할 수 있습니다.
하지만 이것으로 정보를 알기엔 너무나 부족합니다.


크롬에서 키보드 f12를 눌러서 페이지 소스코드를 확인했습니다.

 


페이지 소스코드 분석

 

 

이전의 문제들에 비해서 코드의 형식과 길이가 길어졌음을 확인할 수 있습니다.
그래서인지 친절하게 주석으로 "do it"이라는 표시를 해주셨네요 :)


다른 코드들을 자세히 해석하는 것보다 do it을 집중적으로 알아보겠습니다.

 

  if(cd==124) location.href=String.fromCharCode(cd)+".php"; // do it!

 

cd는 변수를 의미하는 것 같습니다. 124일 때 실행되는 코드입니다.
location.href 문장이 있으니 정답과 관련된 내용이 분명합니다.


String 메서드는 문자열과 관련된 작업을 주도합니다.
String.fromCharCode() 메서드는 유니코드에 해당하는 문자들로 반환하는 역할을 합니다. 


String.fromCharCode(cd) = 124에 해당하는 유니코드 문자로 반환
124가 어떤 값에 해당하는지는 ASCII 코드표를 참고하여 확인할 수 있습니다.

 

 

출처 : https://en.wikipedia.org/wiki/File:ASCII-Table-wide.svg

 

ASCII 코드 값에 대한 참고 : https://ko.wikipedia.org/wiki/ASCII

 

ASCII - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 1972 프린터 사용 설명서에 개시된 아스키 코드 차트표 미국정보교환표준부호(영어: American Standard Code for Information Interchange), 또는 줄여서 ASCII( , 아스키)는 영문

ko.wikipedia.org

 

124에 해당하는 값은 파이프 문자(|)입니다. 
파이프(|)는 키보드에서 엔터키 위의 \ 자판을 shift 입력과 함께 누르면 나타나는 문자입니다.


이번에는 어떻게 입력을 해야 정답 화면을 표시할 수 있는지 알아보았습니다.
페이지의 메인이 되는 body 태그를 확인해 보겠습니다.

 

<body bgcolor="black" onload="kk(1,1)" onkeypress="mv(event.keyCode)">

 

onkeypress는 키보드의 입력이 되자마자 수행하는 역할을 해줍니다.
mv()는 script 태그에서 정의된 함수이며, event.keyCode는 특정 역할을 수행하는 코드를 의미합니다.
ASCII 값으로 다룬다는 것만 알아두면 될 것 같습니다.


페이지의 소스코드를 이해하자면 

script 태그에 정의되어있는 mv() 함수에서 다루는 값은 100, 97, 119, 115, 124입니다.
ASCII표로 키보드 값을 확인하면 d, a, w, s, | 입니다.

 


각각의 키를 입력하게 되면 특정한 행동을 취한다는 의미입니다.


직접 페이지 화면에서 키보드 입력을 해보시기 바랍니다. 
마치 게임 방향키를 다루듯이 별이 움직이는 것을 확인할 수 있을 것입니다.

 

d, a, w, s 누르면 움직입니다

 

파이프 문자는 shift키 + \ 입력합니다. 그러면 문제를 해결하는 것을 확인할 수 있습니다.

 

 

 

성공한 페이지를 확인하면 %7C.php로 경로가 등장한 것을 볼 수 있습니다.

ASCII표에서 124에 해당하는 값을 HEX값인 7C로 변형하여 표현된 것을 알 수 있습니다.

 

 

-끝-

 

 

 

728x90

'작업 > Webhacking.kr' 카테고리의 다른 글

webhacking.kr old-24 이해하기  (0) 2020.09.01
webhacking.kr old-18 이해하기  (0) 2020.08.30
webhacking.kr old-17 이해하기  (0) 2020.08.30
webhacking.kr old-14 이해하기  (0) 2020.08.30
webhacking.kr old-15 이해하기  (0) 2020.08.29