728x90
https://webhacking.kr/challenge/js-3/
초기 화면이다. 소스코드를 보면서 어떤 문제인지 파악해보자.
<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 |