본문 바로가기

[Wargame Write-up]/HackThis!!

[HackThis!!] [CODING] LEVEL 2

이 메시지를 5초 안에 해독해서 보내라는 문제이다.


공백 문자(' ')가 32가 아닌, 문자 그대로 씌여져 있는 것을 염두해 두자.




이번에도 textarea 안에 문자열이 존재한다.




login form은 저번 문제에서 사용한 것을 그대로 쓰자.


코딩하면, 다음과 같이 된다.


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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
import requests
import time
 
def decode(string):
    string = string.split(',')
 
    decoded = list()
 
    for char in string:
        if char != ' ':
            decoded.append(chr(158 - int(char)))
 
        else:
            decoded.append(char)
 
    return "".join(decoded)
 
url = "https://www.hackthis.co.uk/levels/coding/2"
login_page = "https://www.hackthis.co.uk/?login"
data = {"username""아이디""password""비밀번호"}
 
session = requests.Session()
 
session.post(login_page, data=data)
 
start = time.time()
 
response = session.get(url).text
 
elements = response[response.find("<textarea>")+len("<textarea>"):response.find("</textarea")]
print elements
 
answer = {"answer": decode(elements)}
print answer
 
session.post(url, data=answer)
 
end = time.time()
 
response = session.get(url).text
 
if ("Incomplete" in response or "Incorrect" in response):
    print "[*] Failed (in %ss)" % str(end-start)
 
else:
    print "[*] Success (in %ss)" % str(end-start)
 
 
cs



결과를 보자. 이번에도 SSL 통신 때문에 뜨는 라이브러리 사용 경고는 무시한다.


textarea의 내용을 잘 불러오며, ASCII decode 작업 또한 잘 수행하고 있다.


이번엔 전송하는 데까지 걸리는 시간까지 출력하였는데, 0.7초 정도 걸리는 것 같다.


'[Wargame Write-up] > HackThis!!' 카테고리의 다른 글

[HackThis!!] [REAL] LEVEL 2  (0) 2016.12.19
[HackThis!!] [REAL] LEVEL 1  (0) 2016.12.19
[HackThis!!] [CODING] LEVEL 1  (0) 2016.12.19
[HackThis!!] [INTERMEDIATE] LEVEL 1  (0) 2016.12.18
[HackThis!!] [JAVASCRIPT] LEVEL 5  (0) 2016.12.18