상세 컨텐츠

본문 제목

[웹해킹] Webhacking.kr 1번 풀이

기타 정보/Webhacking.kr

by Mathgongyoo 2013. 11. 2. 16:30

본문

*웹해킹.kr 1번 풀이


들어가면 level 1이라는 말과 함께 index.phps가 적혀있다.

클릭하면 index.phps 파일의 내용을 보여준다.

phps 확장자는 PHP Source의 줄임말로 phps라는 확장자를 가진 소스파일은 컴파일이 되지 않은 raw 파일로 나타난다.

이 raw파일은 아예 컴파일이 되지 않았으므로 소스보기로도 볼 수 없는 내용까지 보인다.


이제 소스를 차근차근 살펴보자.



첫 번째 단락이다. php코드이고 컴퓨터를 조금만 배웠다면 간단히 내용을 알(혹은 짐작할) 수 있는 내용이다.

혹시나 이해하기 힘들 수도 있는 부분을 하나 하나 집어보면


1. 변수 앞에 !가 붙은 것은 변수의 값이 없다(nil), 즉 변수가 정의되지 않았거나 값이 0이라는 것을 의미한다.


2. $_COOKIE[Name]은 "Name"이라는 쿠키명을 가진 쿠키의 "Value"를 의미한다.


3. SetCookie("Name","Value")는 쿠키를 설정하는 명령어로 "Value"의 값을 가진 "Name"이라는 쿠키를 설정한다는 의미이다. 설정된 쿠키의 값을 받는 명령어는 GetCookie("Name")이다.


4. echo는 출력 명령어로서 해당 내용을 출력한다. 이 경우에는 html소스를 출력하여 새로고침이 실행된다.


정리해보면, "user_lv"라는 쿠키가 정의되지 않았으면 그 쿠키의 값을 1로 정의하고 새로고침하라는 뜻이다.


(중간 html코드는 생략한다. 당연히 알아야 하는 내용이니 모르면 검색으로 알아내자.)




두 번째 단락이다. 역시나 이해하기 힘들 수 있는 부분만 확인해보자.



1. $는 php에서 변수를 의미한다. 굳이 따로 정의하지 않아도 값을 넣으면 정의가 된다.


2. eregi함수는 문자를 찾는 함수이다. eregi("찾을 문자","문자열")은 "찾을 문자"가 "문자열"에 포함되어 있을 경우 1, 아닌 경우 0을 반환한다. 여기서, 찾을 문자는 정규식(regex)으로도 정의할 수 있다.(정규식을 모른다면 검색해보자) 위에서 나타난 정규식 [^0-9, .]는 "0부터 9까지의 숫자와 마침표(.)를 제외한 다른 모든문자"를 의미한다.


3. @solve();는 solve()함수를 호출한다는 뜻이다. 이 때 @(골뱅이, at)을 붙이면 에러가 나더라도 에러 내용이 출력되지 않는다. 무조건 붙여야만 함수를 호출할 수 있는 것은 아니다.


정리해보면, 쿠키의 값에 숫자나 마침표를 제외한 값이 들어가면 1로 리셋시키고,

값이 6보다 커도 리셋시키고,

5보다 크면 정답을 출력(solve()함수를 호출)한다는 것이다.


쿠키의 값을 조건에 맞게 바꿔주면 정답이 출력될 것이다.


※ 쿠키의 값을 바꾸는 방법


IE의 경우 "Cooxie Toolbar"를,

Chrome의 경우 Chrome 웹스토어에서 "Edit this Cookie"라는 앱을 다운받아 사용하면 된다.

웹해킹에서 쿠키를 확인하는 것은 기본중 기본이니 앞으로도 위의 앱(혹은 툴바)은 필수 설치사항이라 하겠다.


관련글 더보기