Hongfluenza

[Webhacking.kr] Challenge 1번 본문

CHALLENGE/Webhacking.kr

[Webhacking.kr] Challenge 1번

Hongfluenza 2019. 7. 6. 15:12

level 1번을 클릭하면 다음과 같은 화면이 뜬다.

 

개발자 도구(f12)를 이용해 확인해본 결과

----- index.phps -----를 클릭하면 

index.phps로 이동한다는 것을 알 수 있었다.

 

index.phps로 이동한 화면이다. 

 

먼저 다음 코드를 통해 알게 된 개념에 대해서 정리해보자.

 

PHP 쿠키 값을 설정하는 setcookie()함수

 

setcookie(쿠키명, 쿠키값, 만료시간, 경로, 도메인, 보안, httponly);

 

쿠키명 (필수) 설정될 쿠키의 이름을 결정
쿠키값 (선택) 쿠키 이름에 입력될 값
만료시간 (선택) Default 값은 0이며 쿠키가 유지될 시간을 설정
경로 (선택) 경로를 지정할 경우 특정 위치와 하위 경로에서만 사용가능하도록 설정됨
도메인 (선택) 사용될 도메인을 지정 가능함. 서브도메인 입력 시 해당 서브 도메인만 사용 가능
보안 (선택) 보안 프로토콜인 https 에서만 사용가능하도록 설정함
httponly HTTP에서만 사용가능하도록 하여 스크립트에 의한 쿠키 접근을 허용안하게 함

 

또한, 쿠키값을 새롭게 읽어오거나 업데이트 할 경우에는

$_COOKIE['쿠키명'];을 사용한다.

 

 

그런 다음, echo("<meta http-equiv=refresh content=0>");을 살펴보자.

 

HTML 프로그래밍을 하다보면, 이 페이지를 읽고 난 후

수 초 후에 자동으로 다음 페이지로 보내고 싶을 때가 있는데, 이럴 때 META 태그를 사용한다.

(META태그는 문서의 부가적인 정보를 제공하는 태그이다.)

 

http-equiv=refresh는 이 페이지가 META 태그에 의해서 새로 읽는다는 것을 의미한다.

 

content=0에서 숫자로 된 0은 초를 의미하며, 

5초 후에 뒤에 명시된 url(여기엔 없지만,)주소로 이동하라는 것을 지시하고자 한다면

content=5를 넣어주면 된다.

만약 본문의 예시처럼 url을 생략했을 경우에는 현재의 페이지를 다시 읽어준다.

 

>>> 따라서, 다음 코드를 분석하자면

'user_lv'이라는 쿠키를 생성한 후, 쿠키의 값에 1을 넣어주라는 뜻이다.

 

 

 

 

핵심이 되는 코드는 다음과 같다.

 

if(eregi("[^0-9,.]", $_COOKIE[user_lv])) $_COOKIE[user_lv]=1;

→ 다음 코드는 user_lv 쿠키에 0~9까지의 숫자가 들어가지 않는다면 user_lv의 쿠키 값을 1로 초기화하라는 뜻이다.

 

if($_COOKIE[user_lv]>=6) $_COOKIE[user_lv]=1;

→ 만약 user_lv의 쿠키 값이 6 이상이라면, user_lv 쿠키의 값을 1로 초기화시키라는 뜻이다.

 

if($_COOKIE[user_lv]>5) @solve();

→ user_lv의 쿠키 값이 5초과라면 solve, 즉 해결이다.

 

따라서 쿠키의 값은 5를 초과해야하지만 6보다는 작아야 1로 초기화되지 않고 문제를 해결할 수 있겠다.

 

EditThisCookie를 확인해보면, 값이 1인 것을 확인할 수 있었다.

 

이 값을 5초과 6미만의 값 중에서 임의로 설정한 후,

체크 버튼을 누른 후에 새로고침을 하면

 

성공했다는 Congratulation!의 문구와 함께 200 포인트를 얻게 된다.

 

 

'CHALLENGE > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] 회원가입하기  (0) 2019.07.03