문제에 접속해보면 별을 볼 수 있다(뭐지?)
우리가 지금 화면에서 할 수 있는건 없으니 F12를 눌러보자!
흠..
뭔가 길다..
일단 스크립트 부분을 가져와보겠다.
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!
}
function kk(x,y){
rndc=Math.floor(Math.random()*9000000);
document.body.innerHTML+="<font color=#"+rndc+" id=aa style=position:relative;left:"+x+";top:"+y+" onmouseover=this.innerHTML=''>*</font>";
}
이번에도 하나하나 알아보자
document.body.innerHTML+="<font color=yellow id=aa style=position:relative;left:0;top:0>*</font>";
일단 첫부분에는 color, style 등이 적혀있는걸로 보아 문제 푸는데 도움이 안될것같다.
function mv(cd)
이 함수는 우리가 지난번에 알아봤으니 pass(이렇게 하나하나 알아가는것!)
kk(star.style.left-50,star.style.top-50);
이번에도 star.style이 적혀있는걸로 보아 페이지에 나오는 별 관련 함수인것같다.
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!
여기서도 star.style이 적혀있다..
.
.
.
.
어라? 마지막 부분만 조금 다르다.
자세히 알아보자(정답과 관련이 있을것같은 예감이..?)
if(cd==124) location.href=String.fromCharCode(cd)+".php"; // do it!
일단 cd 가 124이면 어떤 페이지로 이동시키는것같다(이것도 지난번에 배웠다!).
주석으로 do it! 이 적혀있는걸로 보아 여기가 중요한 부분인것같다.
일단 cd부터 알아봐야겠는데..
어떻게 cd에 124라는 값을 줘야할 지 생각해보아야한다.
그렇게 찾아보는 와중 body 부분에 뭐가 적혀있다.
중간에 onkeypress가 있는데 여기에 mv가 적혀있다!
mv(event.keyCode), mv(cd)
흠..
설마 event.keyCode = cd ??
일단 onkeypress라는게 있으니 키보드를 한번 눌러보자.
누르니 별들이 막 생기고 큰 별은 이동한다 ㄷㄷ
아마 누르면 어떤 값이 cd값으로 들어가 별을 이동시키는것같다.
이제 그 어떤 값이 124이면 좋겠는데..
다시 한번 소스코드를 보자
if(cd==124) location.href=String.fromCharCode(cd)+".php"; // do it!
여기서 fromCharCode를 발견할 수 있다.
fromCharCode란 아스키코드 번호를 받아 문자열로 바꿔주는 함수인데...
아스키코드??
설마 cd 값이 아스키코드인가?
일단 표에서 124를 변환하면 |임을 알수있다.
그러면 키보드 | 를 입력해본다면?
역시!
우리가 추측하던게 맞았다.
이렇게 문제 해결 :)
사실 문제를 처음 풀때 키 입력하는것을 못봤다..
그래서 어떻게 풀어야하지 생각하는 도중
if(cd==124) location.href=String.fromCharCode(cd)+".php"; // do it!
이 구문에서 "현재 위치에 |(124의 아스키코드 변환).php를 적으면 풀리지 않을까 생각하여
현재 위치 뒤에 |.php를 붙이니 클리어가 되었다..
확실히 문제를 여러개를 푸니 코드가 조금씩 보이기 시작했다(물론 아직 배워야할게 많다.)!
이런식으로 하나하나 쌓아가자!
'Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] Challenge 6 (0) | 2024.10.06 |
---|---|
[Webhacking.kr] Challenge 17 (0) | 2024.10.06 |
[Webhacking.kr] Challenge 14 (0) | 2024.10.05 |
[Webhacking.kr] Challenge 1 (0) | 2024.10.05 |
[Webhacking.kr] Challenge 3 (0) | 2024.10.04 |