[webhacking.kr] old-01

asdf·2026년 3월 18일

web

목록 보기
7/12

첫 번째 문제입니다.
접속하면 사진과 같이 level과 소스코드가 있습니다. 소스코드가 있기 때문에 먼저 확인을 해보겠습니다.

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

user_lv 쿠키가 존재하지 않으면 초기 값을 1로 설정하여 생성합니다.

<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>

solve(1) 함수를 실행하기 위해선 앞의 조건들을 통과해야 합니다.
if(!is_numeric($_COOKIE['user_lv'])) $_COOKIE['user_lv']=1; 를 먼저 살펴보면 user_lv 값이 숫자가 아닐 경우 user_lv를 1로 설정합니다.
if($_COOKIE['user_lv']>=4) $_COOKIE['user_lv']=1;에서는 user_lv의 값이 4 이상이면 앞과 마찬가지로 값을 1로 설정합니다.
if($_COOKIE['user_lv']>3) solve(1); 에서는 user_lv의 값이 3보다 크면 solve를 실행합니다.

조건을 전부 정리해 보면 user_lv의 값은 3 < user_lv < 4 인 숫자 값이 됩니다!

적절한 값으로 user_lv 쿠키의 값을 설정하면 문제를 해결할 수 있습니다.

profile
Rainy Waltz(a_hisa)

0개의 댓글