Security/Web

[Webhacking.kr] Challenge(old)- old24

bonggang 2020. 6. 4. 15:33

문제


https://webhacking.kr/challenge/bonus-4/

 

Challenge 24

client ip211.249.204.0agentfacebookexternalhit/1.1; kakaotalk-scrap/1.0; +https://devtalk.kakao.com/t/scrap/33984 Wrong IP! view-source

webhacking.kr

 

문제 풀이


0. 소스 코드 확인

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 24</title>
</head>
<body>
<p>
<?php
  extract($_SERVER);
  extract($_COOKIE);
  $ip = $REMOTE_ADDR;
  $agent = $HTTP_USER_AGENT;
  if($REMOTE_ADDR){
    $ip = htmlspecialchars($REMOTE_ADDR);
    $ip = str_replace("..",".",$ip);
    $ip = str_replace("12","",$ip);
    $ip = str_replace("7.","",$ip);
    $ip = str_replace("0.","",$ip);
  }
  if($HTTP_USER_AGENT){
    $agent=htmlspecialchars($HTTP_USER_AGENT);
  }
  echo "<table border=1><tr><td>client ip</td><td>{$ip}</td></tr><tr><td>agent</td><td>{$agent}</td></tr></table>";
  if($ip=="127.0.0.1"){
    solve(24);
    exit();
  }
  else{
    echo "<hr><center>Wrong IP!</center>";
  }
?><hr>
<a href=?view_source=1>view-source</a>
</body>
</html>

 

solve의 조건은 $ip가 127.0.0.1이다.

$ip는 REMOTE_ADDR 값을 넣는데 이후 str_replace를 이용해 값을 일부 변경한다.

변경 조건을 살펴보면 아래와 같다.

변경 전 .. 12 7. 0.
변경 후 .      

변경될 것을 고려해서 REMOTE_ADDR에 값을 넣어준다.

 

1. REMOTE_ADDR 입력

127.0.0.1을 입력할 경우 최종 값은 1이다. (12 7. 0. 0. 1)

위 사항을 고려해서 입력 값을 112277...00...00...1 입력해준다.

 

입력 값에서 제거되는 부분을 제거하면 127..0..0..1 이 된다.

(112277...00...00...1)

..의 값은 .으로 변경되기 때문에 위의 값은 최종적으로 127.0.0.1이 된다.

 

이제 이 값을 입력해준다.

 

그리고 최종 결과

성공