반응형

시작부터 wrong이 적혀있다. 소스를 보자.

 

 

1
2
3
4
5
6
7
8
9
<hr>
Challenge 33-1<br>
<a href=index.txt>view-source</a>
<hr>
<?php
if($_GET['get']=="hehe"echo "<a href=???>Next</a>";
else echo("Wrong");
?>
 
cs

GET방식으로 get=hehe를 넘겨주면 된다. 

 

url?get=hehe

 

 

 

1
2
3
4
5
6
7
8
9
<hr>
Challenge 33-2<br>
<a href=lv2.txt>view-source</a>
<hr>
<?php
if($_POST['post']=="hehe" && $_POST['post2']=="hehe2"echo "<a href=???>Next</a>";
else echo "Wrong";
?>
 
cs

이번에는 POST방식으로 2개의 값을 넘겨줘야 한다.

 

 

파이썬으로 해결 가능하다.

1
2
3
4
5
6
7
8
9
10
import requests
 
URL = 'https://webhacking.kr/challenge/bonus-6/lv2.php'
 
cookies = {'PHPSESSID''value'}
data = {'post''hehe''post2''hehe2'}
 
 
print(requests.post(URL, data=data, cookies=cookies).text)
 
cs

 

결과: 

 

 

 

 

다음 문제로 이동하자.

 

1
2
3
4
5
6
7
8
9
<hr>
Challenge 33-3<br>
<a href=33.txt>view-source</a>
<hr>
<?php
if($_GET['myip'== $_SERVER['REMOTE_ADDR']) echo "<a href=???>Next</a>";
else echo "Wrong";
?>
 
cs

get방식으로 myip의 값이 내 ip주소와 일치하면 된다.

 

?myip=본인의아이피주소

 

 

 

다음 문제로 이동하자.

 

일단 힌트가 있다. 값을 보면, time값인 것 같다.

 

1
2
3
4
5
6
7
8
9
<hr>
Challenge 33-4<br>
<a href=l4.txt>view-source</a>
<hr>
<?php
if($_GET['password'== md5(time())) echo "<a href=???>Next</a>";
else echo "hint : ".time();
?>
 
cs

time()값의 md5해시값이 password와 같으면 된다.

 


Time()값은 시간에 따라 변하고, md5해시값을 구해서 request를 하는데에 시간이 걸리므로,
Hint에 표시되는 시간에 수십초 정도를 더한 값의 md5값을 구해서 get방식으로 넘겨주면 된다.

 

해당 time()값이 될때까지 새로고침을 계속 해주면 된다.

 

 

 

 

 

다음 문제로 이동하자.

 

 

1
2
3
4
5
6
7
8
9
<hr>
Challenge 33-5<br>
<a href=md555.txt>view-source</a>
<hr>
<?php
if($_GET['imget'&& $_POST['impost'&& $_COOKIE['imcookie']) echo "<a href=???>Next</a>";
else echo "Wrong";
?>
 
cs

 

 

 

 

다음 문제는 get, post, cookie값을 모두 받는다. 간단하게 파이썬 코드를 작성하여 해결이 가능했다.

 

1
2
3
4
5
6
7
8
9
10
import requests
 
URL = 'https://webhacking.kr/challenge/bonus-6/md555.php?imget=a'
 
cookies = {'PHPSESSID''[value]''imcookie''a'}
data = {'impost''hehe'}
 
 
print(requests.post(URL, data=data, cookies=cookies).text)
 
cs

 

 

 

다음 문제로 이동하자.

 

 

1
2
3
4
5
6
7
8
9
<hr>
Challenge 33-6<br>
<a href=gpcc.txt>view-source</a>
<hr>
<?php
if($_COOKIE['test'== md5($_SERVER['REMOTE_ADDR']) && $_POST['kk'== md5($_SERVER['HTTP_USER_AGENT'])) echo "<a href=???>Next</a>";
else echo "hint : {$_SERVER['HTTP_USER_AGENT']}";
?>
 
cs

쿠키 test값이 md5(ip주소)이고, POST방식으로 넘긴 kk의 값이 md5($_SERVER['HTTP_USER_AGENT']) 이어야 한다.

$_SERVER['HTTP_USER_AGENT']의 값은 힌트로 제공해주고 있기 때문에 그대로 md5해시화하면 된다.

 

 

1
2
3
4
5
6
7
8
9
10
import requests
 
URL = 'https://webhacking.kr/challenge/bonus-6/gpcc.php'
 
cookies = {'PHPSESSID''value''test''c069724157f7b464fe9470ab037e420e'}
data = {'kk''fa33cbcb27178503b0a544f0bd1f9e8d'}
 
 
print(requests.post(URL, data=data, cookies=cookies).text)
 
cs

 

 

 

 

 

다음 문제로 넘어가자.

 

1
2
3
4
5
6
7
8
9
10
<hr>
Challenge 33-7<br>
<a href=wtff.txt>view-source</a>
<hr>
<?php
$_SERVER['REMOTE_ADDR'= str_replace(".","",$_SERVER['REMOTE_ADDR']);
if($_GET[$_SERVER['REMOTE_ADDR']] == $_SERVER['REMOTE_ADDR']) echo "<a href=???>Next</a>";
else echo "Wrong<br>".$_GET[$_SERVER['REMOTE_ADDR']];
?>
 
cs

get으로 받는 변수명이 ip주소에서 .이 빠진 값이고, 해당 변수의 값이 변수명과 동일하다.

 

 

 

 

다음 문제로 넘어가자.

1
2
3
4
5
6
7
8
9
10
11
<hr>
Challenge 33-8<br>
<a href=ipt.txt>view-source</a>
<hr>
<?php
extract($_GET);
if(!$_GET['addr']) $addr = $_SERVER['REMOTE_ADDR'];
if($addr == "127.0.0.1"echo "<a href=???>Next</a>";
else echo "Wrong";
?>
 
cs

addr의 값으로 127.0.0.1을 넘겨주면 된다.

 

 

 

다음 문제로 넘어가자.

1
2
3
4
5
6
7
8
9
10
11
12
<hr>
Challenge 33-9<br>
<a href=nextt.txt>view-source</a>
<hr>
<?php
for($i=97;$i<=122;$i=$i+2){
  $answer.=chr($i);
}
if($_GET['ans'== $answerecho "<a href=???.php>Next</a>";
else echo "Wrong";
?>
 
cs

 

 

answer의 값은 아래와 같다.

 

 

 

 

 

 

다음 문제로 이동하자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<hr>
Challenge 33-10<br>
<a href=forfor.txt>view-source</a>
<hr>
<?php
$ip = $_SERVER['REMOTE_ADDR'];
for($i=0;$i<=strlen($ip);$i++$ip=str_replace($i,ord($i),$ip);
$ip=str_replace(".","",$ip);
$ip=substr($ip,0,10);
$answer = $ip*2;
$answer = $ip/2;
$answer = str_replace(".","",$answer);
$f=fopen("answerip/{$answer}_{$ip}.php","w");
fwrite($f,"<?php include \"../../../config.php\"; solve(33); unlink(__FILE__); ?>");
fclose($f);
?>
 
cs

 

answerip/{$answer}_{$ip}.php 으로 이동하면 문제가 해결됨을 알 수 있다.

 

answer과 ip의 값도 파이썬으로 구하자.

 

... 파이썬으로 하려고 했는데 잘 안되서 그냥 php로 돌렸다.

1
2
3
4
5
6
7
8
9
10
<?php
$ip ='myip';
for($i=0;$i<=strlen($ip);$i++$ip=str_replace($i,ord($i),$ip);
$ip=str_replace(".","",$ip);
$ip=substr($ip,0,10);
$answer = $ip*2;
$answer = $ip/2;
$answer = str_replace(".","",$answer);
echo $answer.'_'.$ip.'.php';
?>
cs

 

반응형

+ Recent posts