Webhacking 1번 문제풀이
level표시와 view-source라는 부분이 눈에 띄인다.
view-source를 눌러 소스코드를 확인해 보자.
소스코드가 보이는데 php와 html로 작성되어져 있다.
검은색 글씨로 된 html 코드는 [그림 1]에 보이는 화면을 나타내는 것이기에 신경을 쓰지 않아도 될거 같다.
<?php> php구문을 한번 살펴 보자 ‘../../’ 2개 위에 위치해 있는 ‘config.php’파일을 불러온다(포함시킨다). 그 다음에는 if문으로 조건을 걸어 주었다.
{$_GET[‘view-source’] == 1} {view_source(); }
$_GET[‘view-source’] 가 1이면 소스코드를 보여준다는 구문이다.
이 구문이 정상적으로 실행이 되어 클라이언트인 나에게 코드가 보여지는 것이다.
*이부분은 유사한 형태로 계속해서 나온다. 뒷 풀이에서는 따로 다루지 않겠다.
if(!$_COOKIE['user_lv']){
SetCookie("user_lv","1",time()+86400*30,"/challenge/web-01/");
SetCookie 형식을 보면 SetCookie(“쿠키명”, “쿠키값”, “만료시간”,“사용가능 위치”); 로 되어있으면 여기서 user_lv라는 값은 쿠키이름을 나타낸다.
만료시간을 보면 약 한 달로 설정되어있다.(86400 = 60 x 60 x 24 즉, 24시간)
이번에는 하단의 <?php> php구문을 살펴보자 쿠키값을 본격적으로 검사하는 구문이다.
if(!is_numeric($_COOKIE['user_lv'])) 쿠키값이 숫자가 아닐 경우 쿠키값을 1로 설정한다라는 구문이며 is_numeric은 변수 값이 숫자인지를 판별하는 구문이다.
기본적으로 쿠키값은 1로 세팅되어져있다.
1.if($_COOKIE['user_lv']>=6) 쿠키 값이 6보다 크거나 같을 경우 $_COOKIE['user_lv']=1;
쿠키값을 1로 세팅한다.
2. if($_COOKIE['user_lv']>5) 쿠키 값이 5보다 클 경우 문제가 풀리다.
위 두 경우가 동시 만족할 때 문제가 풀리도록 설계되어있다.
6보다 크거나 같으면 값이 1이 되고 5보다 클 경우 문제가 풀린다. 그렇다면 어떻게 해야될까
5와 6사이에 값이 쿠키값이 되면 문제가 풀린다! [5 < user_lv < 6]
그렇다면 쿠키값은 어떻게 바꾸는가? 필자는 chrome 확장프로그램으로 EditThisCookie
를 다운 받아 사용하였다.
user_lv 값이 1로 나타나는 것을 볼수 있다. 이 값을 5와 6의 사이값으로 바꿔주면 solve!
난 풀었어서 already solved....
이 문제는 Cookie 개념을 위한 문제인거 같다.