본문 바로가기

Wargame/▷ xcz.kr

[xcz.kr] prob18 - Web Basic


[xcz.kr prob18]

Web Basic 라는 제목의 xcz.kr 18번 문제입니다.

처음으로 웹 문제가 나왔습니다. 소스를 한번 보도록 하겠습니다.



변수들의 이름이 보기 안좋게 난독화 되어있습니다. 메모장의 기능인 control + h 을 사용하여 난독화 변수를

보기 쉽게 정리해줍시다.


보기 좋게 php코드만 따로 정리해주었습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<? 
$key = "Congratulations!</br>Key is ??????????????????"; 
$a = @$_COOKIE['c']; 
$b = @$_GET['g']; 
$c = @$_POST['p']; 
if(empty($a) || empty($b) || empty($c)){exit ('wrong T.T');} 
$d = $b . $a; 
$e = $c; 
function test($a){ 
$b = ''; 
    for($i=0; $i < strlen($a); $i++){ 
        $b = $b . ' - ' . ord(substr($a,$i,1)); 
    } 
    return $b; 
} 
if(test($d)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($e) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33"){ 
    echo $key; 
} 
else{ 
    echo 'wrong T.T'; 
} 
?
 
cs

소스 코드의 조건을 보자면 쿠키값과 GET, POST값을 받는 변수 a,b,c의 값은 비어있으면 안되며

b.a를 연결한 d 에는 "givemepassword" 라는 문장이 들어가 있어야되고, c와 같은 e에는 "keyplz!" 라는 문장이 들어가 있어야합니다.

요약 하자면 

c = password

g = giveme

p = keyplz! 가 있어야 합니다.

그래서 따로 파이썬 코드를 짜주어서 값을 넣어주었습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import urllib, urllib2
 
url = 'http://xcz.kr/START/prob/prob18.php?g=giveme'
 
post_data = {'p':'keyplz!'}
 
cookie_data = {'cookie':'PHPSESSID=hgd9b062teo4ipgotaejhlnlg3;'
               'c=password'}
 
post_data = urllib.urlencode(post_data)
request = urllib2.Request(url,post_data,cookie_data)
response = urllib2.urlopen(request)
response = response.read()
print response
cs


(http://verus.tistory.com/entry/xczkrprob18) 참고해서 코드를 짰습니다.(사실상 그냥 배낀수준;;) 감사합니다



Clear!