Wargame/webhacking.kr

*Challenge old 52 (400)

마띠(쥔장) 2020. 2. 21. 09:40
728x90

내 미션이 admin page에 접근하는 것이라고 한다. admin page를 들어가보자.

사용자 이름과 비밀번호를 입력하게 되어 있고

guest 계정은 guest/guest라고 하는 것을 보니, admin 비밀번호를 찾든 뭘 해서 로그인 하면 될 것 같다.

 

guest로 로그인하면 hi guest가 출력된다.

 

로그인 창에서 취소를 누르면 다음과 같은 소스를 볼 수 있다.

<?php
include "config.php";
if($_GET['view_source']) view_source();
if($_GET['logout'] == 1){
  $_SESSION['login']="";
  exit("<script>location.href='./';</script>");
}
if($_SESSION['login']){
  echo "hi {$_SESSION['login']}<br>";
  if($_SESSION['login'] == "admin"){
    if(preg_match("/^172\.17\.0\./",$_SERVER['REMOTE_ADDR'])) echo $flag;
    else echo "Only access from virtual IP address";
  }
  else echo "You are not admin";
  echo "<br><a href=./?logout=1>[logout]</a>";
  exit;
}
if(!$_SESSION['login']){
  if(preg_match("/logout=1/",$_SERVER['HTTP_REFERER'])){
    header('WWW-Authenticate: Basic realm="Protected Area"');
    header('HTTP/1.0 401 Unauthorized');
  }
  if($_SERVER['PHP_AUTH_USER']){
    $id = $_SERVER['PHP_AUTH_USER'];
    $pw = $_SERVER['PHP_AUTH_PW'];
    $pw = md5($pw);
    $db = dbconnect();
    $query = "select id from member where id='{$id}' and pw='{$pw}'";
    $result = mysqli_fetch_array(mysqli_query($db,$query));
    if($result['id']){
      $_SESSION['login'] = $result['id'];
      exit("<script>location.href='./';</script>");
    }
  }
  if(!$_SESSION['login']){
    header('WWW-Authenticate: Basic realm="Protected Area"');
    header('HTTP/1.0 401 Unauthorized');
    echo "Login Fail";
  }
}
?><hr><a href=./?view_source=1>view-source</a>

먼저, logout==1이면, 즉 guest-guest로 로그인 후 로그아웃을 누르면 login 세션은 사라지고 로그아웃된다.

login 세션값을 admin으로 확인한 뒤에는 ip주소를 확인하고 필터링 후 flag를 출력한다!

admin이 아니면 You are not admin을, admin인데 ip가 필터링 되면, VIP로만 접속할 수 있다고 출력한다.

세션값 조작이 없으면 내가 입력한 pw에 md5 인코딩이 되기 때문에 원래 예상대로 비밀번호를 찾기란 어려울 것 같다.

 

그럼 세션값을 admin으로 만들어보자.

그 후 새로고침 하면

 

초기 화면에는 proxy에 대한 하이퍼링크도 걸려 있다. 역시  클릭해보자.

다음과 같은 Request-Response 정보들이 출력된다.

 

프록시 툴을 사용해서 VIP 설정을 통해 admin 페이지에서 새로고침 하면 flag가 나올 것 같다.

728x90