[어설픈] webhacking.kr 10번 문제풀이

2019. 3. 7. 20:53Web Hacking/Webhacking.kr

안녕하세요!

오늘은 250점짜리 

10번 문제를 풀어보도록 할게요!


문제에 들어가니 아래와 같이 뜨네요!

직관적으로 드는 생각은 

"O 이걸 사용해서 lotto 사는데 성공해야 하나?"



그래서 일단 마우스 커서를

O에 올려놓으니 갑자기 yOu 이렇게 바뀌네요!


흠 뭐지? 

뭐 딱히 되는 게 없네요...


개발자 도구 켜서

O 위에 커서 올려놓으니

이렇게 이런 <a> 태그가 뜨네요!

그리고 태그에 hackme라고 적혀 있는 걸 보니

이 태그를 잘 활용하면 문제가 풀리나 보네요!


흠, onmouseover, onmouseout 때문에 O와 yOu로

바뀌었던 거네요!


그리고 제가 O를 클릭하면 

this.style.posLeft에 1씩 추가가 되나봐요!

(여기서 this는 hackme를 의미해요! hackme.style.posLeft로 이해하시면 되요!)


근데 한 가지 의아했던 점은

"style.postleft값이 바뀌면 

위치가 계속 바뀐다는 건데.."라고

 의문을 가졌지만 

O를 아무리 클릭해도 움직이질 않네요!


현재 상황을 대략 눈치 껏 이해하자면

클릭을 계속하면 postleft값이 1씩 계속 증가한다!

그리고 if문을 만나서 

만약 postleft==800이면 

hackme.href=http://webhacking.kr/challenge/codeing/code1.html?go=80

여기로 간다!





그래서 든 생각이

"굳이 클릭 800번 할 필요 있나? 

그냥 go parameter에 800넣어!"라고 생각을하고 

url 맨 뒤에 ?go=800을 붙여놓고

enter를 쳤습니다!


저는 여기서 바로 문제가 풀릴 줄 알았습니다!

근데 아래와 같이 no hack!이 뜨더라구요!

뭐 이렇게 쉽게 풀지 말라는건가....


아마 제 생각에는 이거 referer로

filtering 하는 것 같네요!


그리고 이건 문제 풀고 나중에 알게 된 사항인데요!

chrome으로는 문제가 잘 안 풀립니다!

O가 움직이질 않아요!


아래의 화면은 internet explorer로 

webhacking.kr에 들어간 것입니다!

여기선 클릭을 하니 계속 움직이죠?

아까 제가 의아했던 부분이 옳았었습니다!



어찌됐든 다시 이 소스 코드로 돌아와서

생각을 했습니다!


일단 onclick이니 자바스크립트가 

실행되는 것이고!


자바스크립트는 클라이언트쪽 언어이니

사용자(나)가 조작이 가능하다!

(=자바스크립트를 실행해도 request가 웹서버를 안거친다)


그러면 저기 클릭할 때 마다 

증가 되는 값을 1 말고 

800으로 바꾸면 어떨까? 


this.style.posLeft +=1    ---> this.style.posLeft+=800




그래서 코드를 수정하면

아래와 같이 바뀝니다!


그러면 다시 돌아와서 click 한번 만 해주면!

문제가 풀립니다!

(근데 크롬에서만?! 이 방법으로 안돼요)


크롬을 위한

또 하나의 방법은 

 아래와 같이 

hackme.style.posLeft를 콘솔창에

799값으로 설정해놓고!


왜냐?

그러면 제가 클릭 한 번만

딱! 하면

postleft값이 800이 되면서 문제가 풀리잖아요!


한 번에 800으로 가봤는데 안되니,

두 번에 걸쳐서

0->799 -> 800 

이렇게 하는거에요!


다시 돌아와서

클릭을 해주면!

postleft값이 799에서 800이 됩니다!

(한번 클릭에 1은 오를 수 있나 보네요...)

고생하셨습니다!