본문 바로가기
워게임/webhacking.kr

[webhacking.kr] 1번 문제 (level 1)

by B T Y 2020. 4. 9.
반응형

[webhacking.kr] 1번 문제 (level 1)

 

 

문제 풀이 과정에 대해서 정리한다.

 

 

1번 문제로 들어가면 위 사진과 같은 문구가 보인다.

level1 문제는 index.phps 에 대한 문제인데 해당 페이지를 소스보기 기능으로 확인해 보면 a태그로 index.phps 페이지로 로케이션 한다는 걸 알 수 있다.  index.phps를 힌트 페이지로 생각하고 문제를 풀면 된다.

먼저 문제를 풀기 위해 index.phps를 클릭해 힌트 페이지로 이동했다.

 

 

 

이 php 코드를 해석하여 어떤 식으로 돌아가는지 파악한다면 쉽게 문제를 풀 수 있다.

각 줄마다 어떤 의미를 가지고 있는 코드인지 각각 해석 해볼 것이다.

 

if(!$_COOKIE[user_lv]) #user_lv cookie에 값이 없다면 if문 수행
{
SetCookie("user_lv","1"); #setcookie 함수를 사용해 user_lv 쿠키를 1로 셋팅한다.
echo("<meta http-equiv=refresh content=0>");
}

$password="????"; #플래그 값이 저장되는 변수 문제 풀이에 상관없기 때문에 패스

if(eregi("[^0-9,.]",$_COOKIE[user_lv])) $_COOKIE[user_lv]=1; #eregi 함수를 이용하여 user_lv cookie 값이 0~9의 정수중 하나로 시작한다면 if문이 수행되고 cookie 값이 1로 셋팅된다.

if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1; #user_lv cookie값이 6보다 크거나 같으면 if문이 수행되고 cookie 값이 1로 셋팅된다.

if($_COOKIE[user_lv]>5) @solve(); #user_lv cookie 값이 5보다 크면 문제가 풀리게된다.

echo("<br>level : $_COOKIE[user_lv]"); #user_lv 쿠키값 출력

※ 코드를 해석 해보면 문제를 풀기 위해서는 cookie값을 변조하는 방법이 필요하다는 걸 알 수 있다.

 

 

- 크롬 쿠키 변조 툴

 

해당 툴을 이용해서 쿠키를 변조한다면 충분히 문제를 풀 수 있다.

 

 

- 문제 풀이 과정

앞에서 php 소스코드를 해석했기 때문에 user_lv 쿠키 값이 5보다 크면 문제가 풀린다는걸 알 수 있는데, eregi 함수로 인해 0~9의 숫자를 사용하면 강제로 user_lv 쿠키 값이 1로 셋팅 되버리게 된다. 또한 쿠키값이 6과 같거나 크면 강제로 1로 셋팅된다.

user_lv 쿠키를 강제로 1로 셋팅 해버리는 두 개의 if문을 우회할 수 있는 방법이 있다면 문제를 풀 수 있다.

만약 5.1 과 같이 5보다 크면서도 6보다 크거나 같지않고 0~9 와 같은 정수가 아닌 실수를 넣는다면 어떻게 될까?

 

 

1번문제 메인 페이지에서 크롬의 우측상단 쿠키 아이콘을 클릭하고, 위 사진처럼 user_lv 쿠키에 5.1 값을 넣어준다. 그리고 밑에 초록색 체크를 클릭하고 새로고침하게 되면 user_lv 쿠키가 5.1로 셋팅된 상태로 서버로 넘어가게 된다.

 

 

새로고침을 하게되면 'congratulation!' 문구와 함께 문제가 풀리게 된다!!

 

 

반응형

'워게임 > webhacking.kr' 카테고리의 다른 글

[webhacking.kr] prob17  (0) 2017.10.13
[webhacking.kr] prob14  (0) 2017.10.12

댓글