위 문제의 소스 코드를 보면 아래와 같다.

'user_lv' 이라는 쿠키가 없을 경우 쿠키를 생성하고 값은 1로 설정한다.

<?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']>=6) $_COOKIE['user_lv']=1;
  if($_COOKIE['user_lv']>5) solve(1);
  echo "<br>level : {$_COOKIE['user_lv']}";
?>
<br>
<a href=./?view-source=1>view-source</a>
</body>
</html>

 

 

문제를 풀기 위한 가장 핵심적인 부분은 아래 코드이다.

'user_lv' 쿠키의 값이 5보다 크고 6보다 작아야 solve(1) 함수가 동작하게 된다.

<?php
  if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1;
  if($_COOKIE['user_lv']>=6) $_COOKIE['user_lv']=1;
  if($_COOKIE['user_lv']>5) solve(1);
  echo "<br>level : {$_COOKIE['user_lv']}";
?>

 

editcookie 크롬 익스텐션으로 user_lv 쿠키 값을 다음과 5보다 크고 6보다 작은 값으로 수정하고 재요청하면 문제가 풀리게 된다.

필자는 이미 문제를 풀었기 때문에 아래 사진 처럼 출력이 된 것이다.