ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Webhacking.kr> old-24
    Wargame/Webhacking.kr 2021. 12. 6. 13:21

    old-24


    IP 주소와 브라우저 정보 그리고 "Wrong IP"를 출력한다.

    view-source를 통해 페이지 소스 코드를 살펴보면

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

    php 구문을 살펴보면

    extract()는 배열 속의 키 값들을 변수화시킨다.

    따라서, $_SERVER["REMOTE_ADDR"]을 $REMOTE_ADDR로 사용할 수 있다.

     

    $REMOTE_ADDR인 $ip에서 ".."을 "."으로,

    "12"를 ""으로,

    "7."를 ""으로,

    "0."를 ""으로 변환시킨다.

     

    그리고 $ip가 127.0.0.1이면 문제가 풀린다.

     

    그럼 127.0.0.1에서 거슬러 올라가면 된다.

    127.00..00..1 -> 127.0.0.1

    1277..00..00..1 -> 127.00..00..1

    112277..00..00..1 -> 1277..00..00..1

    112277...00...00...1 -> 112277..00..00..1

    따라서, REMOTE_ADDR이 121277...00...00...1이면 문제를 해결할 수 있다.

     

    REMOTE_ADDR이 변수이므로 개발자 도구(F12)의 콘솔 창에

    dcoument.cookie='REMOTE_ADDR=112277...00...00...1'를 입력하고

    새로고침을 하면 문제가 풀린다.

     

    이 문제와 같이 extract()를 $_GET, $_POST, $_SERVER와 같은 전역변수에 사용하게 되면 보안상으로 문제가 될 수 있다.

    'Wargame > Webhacking.kr' 카테고리의 다른 글

    <Webhacking.kr> old-27  (0) 2021.12.12
    <Webhacking.kr> old-23  (0) 2021.12.06
    <Webhacking.kr> old-22  (0) 2021.12.05
    <Webhacking.kr> old-21  (0) 2021.12.03
    <Webhacking.kr> old-20  (0) 2021.12.02
Designed by Tistory.