공부/웹해킹 (Web hacking)

[Webhacking.kr | 웹해킹] old-16

eunjuu 2024. 3. 18. 13:45
728x90

📎 https://webhacking.kr/chall.php

 

Webhacking.kr

 

webhacking.kr


문제를 클릭하면 이런 창이 뜬다.

 

코드의 스크립트를 확인해보았다. 

 

 
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>";
}

 

mv() 함수 안에 kk() 함수if() 함수가 여러개 있다.

 

 

kk() 함수

  • Math.random() : 0 이상 1 미만의 난수 생성
  • Math.floor() : 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환

 

mv() 함수에서 마지막 if문인 if(cd==124)를 보면, cd가 124인 경우 String.fromCharCode() 함수에 의해 아스키 값이 124에 해당하는 | 를 누르면 문제를 해결할 수 있을 것 같다.

 

 

728x90