보안을 그리다, 훈이

[Web Hacking] Webhacking.kr old-01(20p) Write Up 본문

Security/Wargame

[Web Hacking] Webhacking.kr old-01(20p) Write Up

HooNeee 2022. 3. 26. 20:00

 

Webhacking.kr old-01(20p) 문제 풀이입니다.

 

[Webhacking.kr] Challenge old-01

 

본 문제는 PHPCookie에 대한 기본적인 이해를 필요로 한다.

 

먼저, 소스코드를 보자.

 

<?php
  include "../../config.php";
  if($_GET['view-source'] == 1){ view_source(); }
  if(!$_COOKIE['user_lv']){
    SetCookie("user_lv","1",time()+86400*30,"/challenge/web-01/");
    echo("<meta http-equiv=refresh content=0>");
  }
?>
<html>
<head>
<title>Challenge 1</title>
</head>
<body bgcolor=black>
<center>
<br><br><br><br><br>
<font color=white>
---------------------<br>
<?php
  if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1;
  if($_COOKIE['user_lv']>=4) $_COOKIE['user_lv']=1;
  if($_COOKIE['user_lv']>3) solve(1);
  echo "<br>level : {$_COOKIE['user_lv']}";
?>
<br>
<a href=./?view-source=1>view-source</a>
</body>
</html>

 

소스코드에서 중요한 부분을 해석해보면,

 

Line 5 > 일단 user_lv Cookie 값이 존재하지 않으면 1로 세팅한다.

Line 20 > user_lv Cookie 값이 4 이상일 시에도 1로 세팅한다.

Line 21 > user_lv Cookie 값이 3을 초과하면 Solve(1)가 실행된다.

 

즉, user_lv Cookie 값이 3 초과 4 미만의 값이면 Solve(1)가 실행된다는 의미로 해석할 수 있다.

 

따라서, EditThisCookie 툴을 이용하여 1로 세팅되어 있는 user_lv Cookie 값을 3.1로 설정해주면 된다.

Get the Flag!

 

정상적으로 문제가 풀린다.

 

Comments