문제에 접속하니 이런 화면이 나온다.
한번 소스코드를 보자.
<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>
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 |