Search

WebHacking.kr Challenge old-33

목표 : 10문제 POST, PHP
시작부터 난 아무것도 안했는데 Wrong이라고 한다.
view-source 클릭해보면 다음과 같은 코드가 나온다.

1. 33-1

<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"); ?>
PHP
복사
get 인자에 hehe가 들어오면 다음으로 간다.
Next가 생겼다 넘어가자.

2. 33-2

On the Next Level
<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"; ?>
PHP
복사
이번에는 post로 2개 인자에 값을 채워 보내라 한다.
Method를 POST로, 각 인자는 &로 구분한다. 콘텐츠 길이도 맞춰줬다.

3. 33-3

<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"; ?>
PHP
복사
GET으로 받는 인자가 현재 내 ip랑 같으면 된다. 쉽다.
아이피를 주소에 입력하고 넘어가자.

4. 33-4

<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(); ?>
PHP
복사
힌트가 있다.
time 함수로 만들어지는 값이다 새로고침을 하다보면 숫자가 바뀐다 1초마다 값이 1이 오른다.
적절히 미래를 예상해서 시간에 맞는 md5값을 만들어놓고 새로고침하면 되겠다
cyberchef를 이용해 md5 암호화했다.

5. 33-5

<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"; ?>
PHP
복사
if 함수 안에 GET 인자 imget, POST 인자 impost, 쿠키 imcookie 값 세개가 모두 존재하면 참이 된다.
쿠키 값과 GET 값을 먼저 설정해주고 Burp로 잡았다.

6. 33-6

<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']}"; ?>
PHP
복사
쿠키 값 test 에는 내 IP를 md5로, kk POST인자에는 AGENT 값 md5 값을 넣어준다.

7. 33-7

이 정도면 Dirbuster 돌려서 그냥 마지막 문제로 올 걸 그랬다. 문제가 너무 많다.
<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']]; ?>
PHP
복사
내 IP에서 . 을 없앤 값이랑 GET으로 새로 획득 한 IP 값이 동일해야 한다.
xxx.xxx.xxx.xxx = xxxxxxxxxxxx
즉 뒤에 aaabbbcccddd=aaabbbcccddd를 GET 인자로 넣어주면 된다.

8. 33-8

<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"; ?>
PHP
복사
addr이 빈칸이면 내 ip가 되지만 아니므로 그냥 GET 으로 127.0.0.1을 넣어보자

9. 33-9

<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"; ?>
PHP
복사
97은 아스키코드값으로 a이고 i를 2씩 증가시키니
97-a 99-c 101-e 103-g 105-i 107-k 109-m 111-o 113-q 115-s 117-u 119-w 121-y
answer = acegikmoqsuwy
이걸 GET 방식으로 ans에 넣어주자

10. 33-10

<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); ?>
PHP
복사
ord($i) - 아스키코드값으로 변환
현재 aaa.bbb.ccc.ddd 면 10자가 넘으므로 0~9까지의 모든 숫자를 아스키코드로 바꾼다.
그리고 .을 제거한다. 10자가 넘어가면 자른다. 2로 곱하고 2로 나누고 .을 다시 없애고 난리를 친다.
사실 직접 이걸 손으로 할 필요가 없다.
$_SERVER['REMOTE_ADDR'] 부분에만 본인의 IP를 넣고 직접 php를 돌리면 된다.
이런 식으로 온라인에서 php를 돌릴 수 있다.
$f=fopen("answerip/{$answer}_{$ip}.php","w");
PHP
복사
27553775775_5510755155.php 을 들어가면 solve(33)가 있을 거다.

✓ 다른 [워게임] 포스트

WebHacking.kr Challenge Write-Up (70/80)
In progress
WebHacking.kr Challenge Write-Up (70/80)
In progress
Load more
︎ 더 많은 게시물을 보려면
︎ 작성자가 궁금하면?
 2023. absolroot all rights reserved.