[webhacking.kr] old-24번 풀이(Write-up)

2021. 8. 29. 16:52Wargame CTF

문제

 

 

분석

 

IP와 인터넷 브라우저 정보가 담겨져 있습니다.

 

<?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>

 

 

소스코드를 보면 COOKIE값에 IP값을 조종해서 127.0.0.1로 만들면 될 것 같습니다.

여기서,

.. > .

12 > 공백

7. >  공백

0. > 공백

여기서 replace는 이미 한번 치환한 경우 또 다시 검사를 안하므로 취약점이 터집니다.

 

10.270...00...00...1

10.270..00..00..1

10.270..00..00..1

127.0.0.1

 

 

 

 

쿠키를 만든 다음에, 전송해 주면.

 

 

 

 

 

 

 

 

 

 

 

 

정답