인디안 보호구역

WebHacking.kr 32 본문

Study/WebHacking 공부하는 인디안

WebHacking.kr 32

Indie-An 2019. 5. 22. 00:45
  1. 문제 풀이

<첫인상>

랭킹 시스템이다. 아무것도 몰라서 1번 아이디를 클릭해봤는데 HIT가 하나 올라갔다..!! 신기해서 또 눌러보니까 ‘no!’라는 알림창만 뜰 뿐 더 이상 HIT가 올라가지 않는다. 다른 아이디를 눌러도 마찬가지였다. 처음과는 다르게 카운트가 올라가지 않는다.

 

맨 밑의 Join 버튼을 눌러보니 알림창으로 ‘내 아이디’가 화면에 노출되었다.

무슨 문젠지 아직 감이 안잡히므로 스크립트를 확인하기로했다.



<코드 확인>

잘 안보여서 확대해봤다.

 

(1번 아이디의 속성)

1번부터 쭉 나열된 모든 ID들은 각각 위와 동일한 속성을 가지고 있었다. 그 중 눈에 띄는 것은 클릭 시, ‘?hit=USERID’ 의 url로 이동된다는 것. 카운트를 올리기 위해선 해당 url로 진입해야한다. 계속 거부당하고 있지만.

 

(Join 버튼의 속성)

해당 버튼을 누르면 ‘code5.html?vote=add’의 url로 이동된다. vote라는 단어를 보고 투표시스템이라는 생각이 들었다. 그래서 재투표가 안되는 것이었구나 라고 생각했다. 문제를 풀기 위해 계속 띵킹하다보니 HIT가 ‘n/100’인 것을 보며 100표를 채우면 이벤트가 발생할 것이라는 생각이 들었다.

 

클라이언트의 중복 투표를 방지하기 위해선,

  1. 클라이언트의 PC에 중복방지 데이터를 저장한다.

  2. 서버에 각 클라이언트에 대한 중복방지 데이터를 저장한다.

둘 중에 하나의 경우를 만족해야 된다.

첫 번째 경우는 쿠키에 저장될 것이고, 두 번째 경우는… ??? (모름)

내 생각엔 서버가 클라이언트의 이런 짜잘한 데이터마저 수집해서 보유하면 분명 서버 데이터가 미어터질테니 클라이언트에 저장하는 방식을 조사하는 것이 합리적이라는 생각이 들었다.



<문제 풀이>

투표 방식은 이름을 클릭하는 것이었다. 그렇다면 Join 버튼은 내가 투표에 입후보로 참여하는 기능일 것이라고 생각할 수 있었다. 그래서 내 이름을 찾아봤더니 중간에 있었다.!

그리하여 크롬 개발자 툴에서 쿠키를 삭제해주었으나 100번을 노가다로 삭제-클릭 할 순  없는것. EditThisCookie에는 특정 이름을 가진 쿠키를 금지하는 기능도 있었기에 바로 사용했다.

금지하니 클릭 하기가 수월했는데.. 100번 클릭하는 것도 자존심 상하는 일. 그건 컴퓨터 공학과의 자존심이 허락하지 않았다. 그래서 만든 짧은 코드.

(12번까진 클릭했던 흔적 ㅎㅎ)

그래서 결과는...

150점 획득.!

 

2. 배운 점

  • 파이썬의 requests 모듈에 대해서 알게되었다.

  • 중복 참가 방지 기능으로 쿠키만을 사용하기엔 위와 같은 단점들이 있겠구나.

 

3. 참고 링크

 

'Study > WebHacking 공부하는 인디안' 카테고리의 다른 글

Webhacking.kr 15  (0) 2019.05.25
Webhacking.kr 24  (0) 2019.05.25
Webhacking.kr 10  (0) 2019.05.19
WebHacking.kr 14  (0) 2019.05.11
WebHacking.kr 1  (0) 2019.05.11
Comments