첫번째 소스코드는 다음과 같다.
<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");
?>
?get=hehe를 넣어줬다.
_____________________________________________________________________________________
다음 소스코드가 나왔는데
<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";
?>
이번에는 get 방식이 아니라 post 방식으로 받는다.
즉 입력을 다른 방식으로 해주되, post랑 post2로 해줘야한다.
문제 출제의도자체가 get이랑 post 차이점을 파악하는거 같다.
get 방식 자체는 ?를 이용해서 input값을 넣어주어야 하는데, post 방식은 그게 아니고, 코드 안에 직접 넣어주는 형태로 들어간다.
즉 소스코드에 다음과 같이 추가해준다.
<form method="post" action="lv2.php">
POST<input type="text" name="post">
POST2<input type="text" name="post2">
<input type="submit" value="Submit">
</form>
_____________________________________________________________________________________
문제가 또있다.
<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";
?>
이 문제는 이제 다시 get방식으로 myip에 입력을 받는데, $_SERVER['REMOTE_ADDR'] 이게 뭔지 모르겠다.
remote 에서 서버함수라고한다.
그 안의 인자로 들어가있는 것은 REMOTE_ADDR 은 사이트에 접속한 사용자의 ip라고 한다.
그대로 넣어주었다.
_____________________________________________________________________________________
또있다….ㅎㅎ
코드를 보자
<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();
?>
힌트에 있는 값을 md5 해쉬해서 넣어줬는데 안된다.
이게 시간따라서 변하는 거라 시간 맞게 넣어줘보자
_____________________________________________________________________________________
또있네…...ㅎㅎ얼마나 더있는거지
<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";
?>
링크 까먹어서 한번 더 했다. 링크 적어놓자
https://webhacking.kr/challenge/bonus-6/md555.php
<form method="post" action="md555.php">
POST<input type="text" name="impost">
<input type="submit" value="Submit">
</form>
3개 모아놓은거라서 쉽게 처리했다.
_____________________________________________________________________________________
https://webhacking.kr/challenge/bonus-6/gpcc.php
쿠키에 내 아이피를 md5해쉬 만들어준거 만들어주고,
05b3fe3ae50369677eba657dd47d099b
post 타입으로 입력칸을 써준다.
<form method="post" action="gpcc.php">
post<input type="text" name="kk">
<input type="submit" value="Submit">
</form>
입력칸에는 user agent 값을 md5해쉬 해서 넣어준다.
237aa6249591b6a7ad6962bc73492c77
_____________________________________________________________________________________
또있네 얼마나 더있는걸까
<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']];
?>
현재 아이피를 str_replace 한다.
그리고 get 방식으로 입력받은 값과 비교하면 된다.
현재 ip가 223.38.46.52 이다.
즉 필터링 하게 되면, 223384652다.
223.38.46.86
223384686
근데 안된다. 의문점이 든 부분이 있는데
get 방식으로 하면 보통 변수에서 가져왔다.
하지만 지금 꺼는
$_GET[$_SERVER['REMOTE_ADDR']]
형식으로 가져오는데 변수이름이 SERVER['REMOTE_ADDR']인 것인가…?
이부분이 잘 이해가 되지는 않는다.
그래서 입력 형식이
?223384654=223384654
이렇게 되는 것 같다.
_____________________________________________________________________________________
또 넥스트가 있다
<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";
?>
아이피를 변조해야 하는것같다.
현재 아이피는 223.38.52.176 이다.
근데 문제가 좀 이상한게 첫번째 if 문은 addr 이 존재하지 않을때, 내 아이피를 가져오는 것이고,
없다면 그냥 두번째 if 문으로 넘어간다. 즉 addr 에 127.0.0.1을 get 방식으로 넣어주면 된다.
다음 문제를 보자.
_____________________________________________________________________________________
<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";
?>
answer에 들어갈 값부터 보자.
chr(97,99,101,103,105,107,109,111,113,115,117,119,121)이 된다.
파이썬 이용해서 출력해보자.
foriinrange(97,122):
if(i%2!=0):
print(chr(i))
acegikmoqsuwy
_____________________________________________________________________________________
다음 문제를 보자
https://webhacking.kr/challenge/bonus-6/forfor.php
<hr>
Challenge 33-10<br>
<a href=forfor.txt>view-source</a>
<hr>
<?php
$ip = $_SERVER['REMOTE_ADDR']; // ip =223.38.52.176
for($i=0;$i<=strlen($ip);$i++) $ip=str_replace($i,ord($i),$ip); //0~13 까지 for문
$ip=str_replace(".","",$ip);//ip=2233852176
$ip=substr($ip,0,10);//ip=2233852176
$answer = $ip*2; //4467704352
$answer = $ip/2; //1116926088
$answer = str_replace(".","",$answer);//answer
$f=fopen("answerip/{$answer}_{$ip}.php","w");//
fwrite($f,"<?php include \"../../../config.php\"; solve(33); unlink(__FILE__); ?>");
fclose($f);
?>
이거는 그냥 파이썬으로 짰다.
'WriteUp > Webhacking.kr' 카테고리의 다른 글
webhacking.kr : challenge 27 (0) | 2020.09.11 |
---|---|
webhacking.kr : challenge 25 (0) | 2020.09.11 |
webhacking.kr : challenge 24 (0) | 2020.09.11 |
webhacking.kr : challenge 23 (0) | 2020.09.11 |
webhacking.kr : challenge 22 (0) | 2020.09.11 |