반응형

소스보기


<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일때 다음으로 넘어가는 href가 나오는거 같다.

https://webhacking.kr/challenge/bonus-6/?get=hehe 로 넘어가보자

밑에 next가 있다.눌러보면

https://webhacking.kr/challenge/bonus-6/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";

?>



이번에는 포스트로 post=hehe&post2=hehe2 의 값을 넘길때 다음으로 넘어갈수 잇는거같다.

(다음은 lv3.php가 아닐까라는 생각으로 넘어가봤지만 아니었다)

처음엔 burp suit로 request를 잡고 POST형식으로 만들어서 해봤지만 완벽히 만들지 않아서 실패했다.

그렇다면 그냥 html을 바꾸어 post와 post2를 넘겨주는 form을 만들어서 넘겨주자

<form method="post" action="lv2.php">

POST<input type="text" name="post">

POST2<input type="text" name="post2">

<input type="submit" value="submit">

</form>

이런식의 html을 크롬개발자도구(f12->edit html)을 통해 삽입하고 hehe와 hehe2를 각각 넣어주면 next로 넘어가는 링크를 볼수있다.


https://webhacking.kr/challenge/bonus-6/33.php

이링크로 넘어가니 또 소스보기가 보인다.


<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";

?>


myip가 자신의 ip와 같을때 넘어간다고 되어있다.
cmd창에서 ipconfig를통해 주소를 알아내 적어보자

next를 클릭해보자(슬슬 얼마나 더 해야될지 무서워진다.)
소스보기를 클릭한다

<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();

?>



밑에 힌트가 주어지고 password값이 md5로 time을 해쉬한 값일때 넘어갈수 있는거같다.

시간은 매시간 바뀐다. 새로고침을 해본결과 1씩 늘어난다.

내가 순발력이좋다면 10 안좋다면 20정도 높여서 해쉬값을 미리구해놓고 url에 붙여서 시간을 맞춰 넘어가면 성공할것이다.(저는 여러번 시도했습니다....)

https://www.md5online.org/ 여기서 md5인코딩을 실행했다.


next를 눌리면 이곳으로 이동하게된다

https://webhacking.kr/challenge/bonus-6/md555.php


소스보기를 해보자

<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를 동시에 보내면서 cookie도 있어야 되는거같다.

먼저 editthiscookie 앱을 통해 cookie를 생성한다. imcookie라는 쿠키를 생성후

위에서 했듯이 html을 수정해준다

post방식으로 보내는 form을 하나만들고  action에 ?imget=love를 추가해 get형식의 데이터도 넣어준다.

이제 대충 내용을 채워놓고 보내면 다음으로 넘어갈수 있다.


<hr>

<form method="post" action="md555.php?imget=love">


POST<input type="text" name="impost">


<input type="submit" value="submit">


</form>


next로 넘어가면

https://webhacking.kr/challenge/bonus-6/gpcc.php

페이지로 넘어가며 역시 소스보기가 보인다.

<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']}";

?>

ip주소를 md5해시한 값이 test라는 쿠키값과 같고 post kk값이 나의 클라이언트정보와 같으면 다음으로 넘어갈수 있다.
위 md5해시 사이트를 이용해 나의 ip와 클라이언트정보를 해시한후 쿠키의 이름을 test로 만들어서 넣어주고


<hr>
<form method="post" action="gpcc.php">
POST<input type="text" name="kk">
<input type="submit" value="submit">
</form>

이런식으로 html을 만들어 클라이언트 정보 해시값을 넣고 넘겨주면 다음으로 넘어갈수 있다.

next를 눌리면 https://webhacking.kr/challenge/bonus-6/wtff.php로 넘어가게된다.

소스를 보자

<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']];
?>

$_SERVER['REMOTE_ADDR(나의 아이피주소에서 .을 제거한)
get name과 value값을 모두 나의 아이피주소에서 .을 제거해 입력해주면 다음으로 넘어갈수있다.
ex)?111111111111=111111111111

next 버튼을 눌리면

https://webhacking.kr/challenge/bonus-6/ipt.php로 접근할수 있다.


소스를 보자


<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";

?>


get의 인자를 변수로 지정하고 있고 addr이 없으면 ip주소를 변수로 지정한다.

그냥 ?addr=127.0.0.1 get인자를 이런식으로 넘겨주면 된다.

next 로 이동하면 

https://webhacking.kr/challenge/bonus-6/nextt.txt로 이동하는데

역시나 소스보기가 나온다


<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 .=연산자는 대부분 언어에서의 +=연산자와 같다

즉 ans는 97부터 2씩 더해 ascii코드 값붙이고 있다.

소문자 a~z까지 한칸씩 건너뛰며 추가하면된다

ace...  최종적으로 acegikmoqsuwy 나온다

?ans=acegikmoqsuwy로 이동하면 next가 나온다.


벌써열번째 

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'];

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주소를 받아 ip주소의 길이만큼 반복문을 수행한다.
str_replace를 실행한다 . replace함수는 str_replace(변경대상문자,변경하려는 문자,변수)
ord 함수는 문자의 아스키값을반환한다.
반복문을 수행후 다시 .을 제거하고 0~10번째까지 추출해 그값에 /2값에서 다시 .을 제거후 파일명을 만들고 php코드를 작성 합니다. 아마 그 파일로 접근하면 solve(33)이 실행되고 파일이 삭제되는것으로 보입니다.
위코드 생각보다 난해한 부분이 있다. 문자의 아스키 값을 반환하는데 length가 10을 넘어가면 어떻게 되는것인가 그리고 length가 중간에 길어지면 저함수는 어떻게 동작하는것인지....
파이썬코드를 짜다보니 오류도 계속생기고 생각해봐도 어떤식으로 동작할지 잘몰라서 php를 실행해주는 사이트로 들어가서 코드를 붙여넣었다.
http://phptester.net/ 위 사이트에 

<?php

$ip = '자신의 ip';
for($i=0;$i<=strlen($ip);$i++) {
echo($i);
echo "<br>";
$ip=str_replace($i,ord($i),$ip);
echo($ip);
echo "<br>";
}
$ip=str_replace(".","",$ip);


$ip=substr($ip,0,10);

$answer = $ip*2;

$answer = $ip/2;

$answer = str_replace(".","",$answer);
echo(&answer);
echo("<br>");
echo($ip);
?>


이런식으로 넣어 확인해보았다.

(10이상 부터는 봐도 잘모르겟다 ㅠㅠ)


어쨋든 결과로 나온 answer과 ip값을 확인후 

https://webhacking.kr/challenge/bonus-6/answerip/{answer}_{ip}.php로 접근하면 성공!



반응형

'보안 > webhacking' 카테고리의 다른 글

webhacking.kr old-35  (0) 2019.12.01
webhacking.kr old-34  (0) 2019.12.01
webhacking.kr old-32  (0) 2019.12.01
webhacking.kr old-28  (0) 2019.12.01
webhacking.kr old-27  (0) 2019.11.28
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기