본문 바로가기
webhacking.kr

[webhacking.kr] Challenge 16 풀이

by jwcs 2023. 7. 14.
728x90

https://webhacking.kr/challenge/js-3/

 

Challenge 16

 

webhacking.kr

 

/

초기 화면이다. 소스코드를 보면서 어떤 문제인지 파악해보자.

 

<body bgcolor=black onload=kk(1,1) onkeypress=mv(event.keyCode)>
<font color=silver id=c></font>
<font color=yellow size=100 style=position:relative id=star>*</font>
<script> 
document.body.innerHTML+="<font color=yellow id=aa style=position:relative;left:0;top:0>*</font>";
function mv(cd){
  kk(star.style.left-50,star.style.top-50);
  if(cd==100) star.style.left=parseInt(star.style.left+0,10)+50+"px";
  if(cd==97) star.style.left=parseInt(star.style.left+0,10)-50+"px";
  if(cd==119) star.style.top=parseInt(star.style.top+0,10)-50+"px";
  if(cd==115) star.style.top=parseInt(star.style.top+0,10)+50+"px";
  if(cd==124) location.href=String.fromCharCode(cd)+".php"; // do it!
}

중요하게 생각되는 부분만 뽑아왔다. onkeypress=mv(event.keyCode)를 보면 키보드 키가 눌렸을 때 mv()함수에 입력받은 키 코드를 전달한다.

event.keyCode는 키보드로부터 입력받은 값에 아스키 코드를 나타낸다. 따라서 

cd==100인 경우는 키보드 'd'에 해당하며 소스 코드에서는 50px을 더하여 오른쪽으로 움직이는 형태이다.

재밌는 것이 쉬프트를 누르고 키보드 d 키를 누르거나 capslock을 설정하고 d키를 누르면 대문자 D가 입력되어 별이 움직이지 않는다.

 

마지막 줄에 cd의 값이 124인 경우, 즉 |을 입력했을 때 php 파일로 이동하는 것이 보이는데 주석으로 do it!으로 설명하고있다. | 키를 누르면 문제가 풀릴 것으로 보인다.

 

짜자잔

728x90
반응형

'webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] old - 24 풀이  (0) 2023.08.03
[webhacking.kr] old - 61 풀이  (0) 2023.07.20
[Webhacking.kr] old - 39 풀이  (0) 2023.07.14
[webhacking.kr] old - 26 풀이  (0) 2023.06.27
[webhacking.kr] old-15 풀이  (0) 2023.06.27