본문 바로가기

Webhacking.kr

[Webhacking.kr] Challenge 10

Challenge 10

 

문제에 접속하니 이런 화면이 나온다. 

 

한번 소스코드를 보자.

 

<a id=hackme style="position:relative;left:0;top:0" 
onclick="this.style.left=parseInt(this.style.left,10)+1+'px';
if(this.style.left=='1600px')this.href='?go='+this.style.left" 
onmouseover=this.innerHTML='yOu' onmouseout=this.innerHTML='O'>O</a><br>

 


소스코드 분석

style="position:relative;left:0;top:0"
  • 현재 위치
onclick="this.style.left=parseInt(this.style.left,10)+1+'px';
if(this.style.left=='1600px')this.href='?go='+this.style.left"
  • 클릭을 하면 this.style.left를 1px만큼 증가시킴

실제로 이동된 모습

  • 만약 this.style.left가 1600px이라면 현재 링크/?go=(this.style.left의 값) 로 이동함
parseInt(문자열, (진수)) : 문자열을 10진수로 변환함. 다른 진수로 변환하고자 하면 직접 입력
onmouseover=this.innerHTML='yOu' onmouseout=this.innerHTML='O'>O</a><br>
  • 만약 마우스가 위에 있다면 yOu , 없으면 O를 보여줌

y0u


 

 

 

O를 계속 눌러 골에 도달하면 풀 수 있을것같지만 너무 오래 걸린다..

 

그래서 어떻게 풀지 고민하던 중 소스코드 분석에서 골 뒤로 보내면 특정 웹 사이트로 보내는 것을 보았다.

 

그래서 직접 입력해 보았는데

 

...

 

no hack이 뜨는걸로 보아 이건 아닌 것 같다(아마 직접적으로 들어가는 건 막아놓은 듯하다)..

 

그래서 고민하던 중 생각해 낸 것이

 

O의 위치를 1599px만큼 이동시킨 후 내가 직접 클릭해 1600px를 만드는 것이다.

 

1600px로 바로 만들지 않는 이유는 조건에서 클릭했을 때 1600px여야 이동되기 때문이다.

 

개발자모드를 눌러 값을 1599px로 바꾸고 

 

 

 

한번 클릭하면 

 

 

문제 해결 :)

 


 

이 문제를 풀 때 너무 어렵게 생각한 것 같다..

 

생각보다 시간이 걸린 문제이다.

 

"나는 실패한 게 아니다. 나는 잘 되지 않는 방법 1만 가지를 발견한 것이다." - 토마스 에디슨

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

[Webhacking.kr] Challenge 24  (1) 2024.11.19
[Webhacking.kr] Challenge 18  (2) 2024.11.08
[Webhacking.kr] Challenge 39  (0) 2024.10.11
[Webhacking.kr] Challenge 12  (0) 2024.10.10
[Webhacking.kr] Challenge 26  (0) 2024.10.08