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 코드표를 참고하여 확인할 수 있습니다.
ASCII 코드 값에 대한 참고 : https://ko.wikipedia.org/wiki/ASCII
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, | 입니다.
각각의 키를 입력하게 되면 특정한 행동을 취한다는 의미입니다.
직접 페이지 화면에서 키보드 입력을 해보시기 바랍니다.
마치 게임 방향키를 다루듯이 별이 움직이는 것을 확인할 수 있을 것입니다.
파이프 문자는 shift키 + \ 입력합니다. 그러면 문제를 해결하는 것을 확인할 수 있습니다.
성공한 페이지를 확인하면 %7C.php로 경로가 등장한 것을 볼 수 있습니다.
ASCII표에서 124에 해당하는 값을 HEX값인 7C로 변형하여 표현된 것을 알 수 있습니다.
-끝-
'작업 > 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 |