webhacking/etc

xcz.kr 18번.

qkqhxla1 2014. 12. 7. 22:48

18.


<? 
$key 
"Congratulations!</br>Key is ??????????????????"
$liillillilliliili = @$_COOKIE['c']; 
$liillillliiiliili = @$_GET['g']; 
$lilllillliiiliili = @$_POST['p']; 
if(empty(
$liillillilliliili) || empty($liillillliiiliili) || empty($lilllillliiiliili)){exit ('wrong T.T');} 
$lililillliiiliili $liillillliiiliili $liillillilliliili
$lilililliiiiliill $lilllillliiiliili

function 
test($a){ 
$b ''
    for(
$i=0$i strlen($a); $i++){ 
        
$b $b ' - ' ord(substr($a,$i,1)); 
    } 
    return 
$b

if(
test($lililillliiiliili)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($lilililliiiiliill) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33"){ 
    echo 
$key

else{ 
    echo 
'wrong T.T'

?> 


라고 소스가 있다. 가벼운 난독화가 적용되었는데 아래의 echo $key부분을 출력하면 된다.


키를 출력하기 위해서는 


1. 여기서 거짓이 되게 하여 exit로 가지 않게 한다.


if(empty($liillillilliliili) || empty($liillillliiiliili) || empty($lilllillliiiliili)){exit ('wrong T.T');} 


2. 아래 조건문을 참을 만들어줘야 된다. 


if(test($lililillliiiliili)==" - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100" || test($lilililliiiiliill) == " - 107 - 101 - 121 - 112 - 108 - 122 - 33")


위의 조건문은 간단하다. 변수 3개가 비어있지 않으면 되는데


변수 3개가 @$_COOKIE['c'], @$_GET['g'], @$_POST['p']; 이다. 이걸 그냥 아무 값으로 설정해준다.


또 2번 조건문은 쉬운 문제라 그런지 앞의 조건이 맞거나 뒤의 조건이 맞으면 되는데...


앞부분보다 뒷부분이 간단하므로 뒷부분의 조건을 참으로 만들어주면...


뒷부분의 조건은 test($lilililliiiiliill)(@$_POST['p'])가 문자열에서 -를 빼고 숫자들을 각각 


아스키코드값으로 만들어줘서 이어준 값이랑 같으면 된다.


import urllib2,re

str = re.findall('(\d+)',"107 - 101 - 121 - 112 - 108 - 122 - 33")
ans = []
for i in range(len(str)):
    ans.append(chr(int(str[i])))

req = urllib2.Request('http://xcz.kr/START/prob/prob18.php?g=a','p='+''.join(ans))
req.add_header('cookie','PHPSESSID=쿠키; c=a')
print urllib2.urlopen(req).read()



앞부분 조건도 만족시켜보면...


import urllib2,re

str = re.findall('(\d+)'," - 103 - 105 - 118 - 101 - 109 - 101 - 112 - 97 - 115 - 115 - 119 - 111 - 114 - 100")
ans = []
for i in range(len(str)):
    ans.append(chr(int(str[i])))
ans = ''.join(ans)
req = urllib2.Request('http://xcz.kr/START/prob/prob18.php?g='+ans[0:len(ans)/2],'p=a')
req.add_header('cookie','PHPSESSID=쿠키; c='+ans[len(ans)/2:])
print urllib2.urlopen(req).read()


.


'webhacking > etc' 카테고리의 다른 글

xcz.kr 21번.  (0) 2014.12.07
xcz.kr 32번.  (0) 2014.12.07
GoogleBig - HackGame  (0) 2014.12.01
Enigmagroup basic/Prerequisites, Spoofing, URL Manipulation  (0) 2014.11.30
overthewire natas 11  (0) 2014.11.24