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
'Wargame > webhacking.kr' 카테고리의 다른 글
*Challenge old 35 (350) (0) | 2020.03.12 |
---|---|
Challenge old 43 (250) (0) | 2020.03.01 |
Challenge old 50 (450) (0) | 2020.02.21 |
Challenge old 41 (250) (0) | 2020.02.18 |
Challenge old 42 (200) (0) | 2020.02.18 |