본문 바로가기

웹해킹/webhacking.kr

old-33 롸업(webhacking.kr)

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