본문 바로가기

워게임/웹해킹kr

웹해킹kr 1번 문제 풀이

http://webhacking.kr/challenge/web/web-01/



웹해킹kr의 시작이자 기본이고, php 소스와 서버와 클라이언트 간 전달되는 값을 알아야 풀 수 있는 문제입니다.

index.phps 글씨를 클릭하면 창이 이동하면서 이 페이지에 담겨있는 php 소스코드를 볼 수 있습니다.

phps라는 확장자를 가진 파일은 php source의 약자로 말 그대로 php의 소스코드가 담긴 파일입니다.



소스코드를 스크린샷 했습니다. 어차피 이 글을 읽고 계신 여러분들은 index.phps 페이지를 띄워서 보시고 계실 겁니다.

처음 시작을 보면, 쿠키를 생성하군요. 

쿠키란, 서버와 클라이언트 간 연결한 후 클라이언트에 저장되는 클라이언트의 정보입니다. 브라우저나 서버는 이 쿠키를 이용해 사용자마다 다른 정보를 보여줄 수 있고, 흔히 로그인창 밑에 로그인을 유지에 체크할 때, 팝업창에서 오늘은 이 창을 보지 않음에 체크할 때 사용합니다.


어쨌든 이 쿠키를 보거나 편집하려면 편리한 도구가 있어야합니다.

다른 프로그램을 설치하지 않고 크롬의 개발자 도구의 콘솔에서도 확인할 수 있습니다.




이런 식의 자바스크립트(document.cookie)를 사용해서 user_lv의 값을 바꿀 수 있습니다.

뒤에 PHP 세션값은 제 로그인 정보가 노출되기 때문에 지웠습니다.

이렇게 쓰는게 싫고 버튼이 좋다! (저의 경우 ㅋㅋ) 하면 아래처럼 하시면됩니다.


https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg?hl=ko




크롬 브라우저에서 확장 프로그램을 다운받습니다. 저는 이미 설치해서 버튼이 초록색인데, 처음 추가하시는 분들은 파란색일 겁니다.

나중에 삭제하려면 설치 후 생성되는 아이콘을 마우스 오른쪽 클릭해서 "Chrome 에서 삭제"를 클릭하시면 됩니다.



크롬 브라우저 상단 오른쪽에 Bar가 세 개 있는 아이콘을 누르면 팝업이 뜨며 맨 윗줄에 설치된 확장 프로그램이 표시됩니다.




클릭하면 대충 이런식으로 뜹니다. + 기호를 눌러서 쿠키를 추가할 수 있고 각각의 쿠키를 눌러서 값을 수정한 다음 아래의 초록색 체크 버튼을 누르면 됩니다. 쿠키를 보고 수정하는데 글을 많이 썼는데 이제 다시 코드를 보며 이해해보겠습니다.



첫번째 php 그러니까 <html>이 나오기 전, 최상단 php를 보겠습니다. user_lv라는 쿠키가 없을 때, user_lv에 숫자 1을 넣어 저장합니다. 그리고 새로고침을 하죠.

두번째 php 에서는 비밀번호를 저장하고 있는 변수가 있고, eregi라는 php 함수와 sovle도 보입니다. (비밀번호 변수는 필요없는듯..)

eregi 함수는 문자열의 대소문자를 구분하지 않고 정규표현식의 패턴과 일치하는 문자가 발견되면 TRUE를 반환합니다. boolean 타입이니까. 아닐 경우에는 당연히 FALSE를 반환합니다. user_lv 쿠키와 [^0-9,.]"라는 패턴을 비교해서 일치(TRUE)하면 user_lv에 1을 설정하네요. 


패턴을 분석해보겠습니다. 패턴을 분석하기에 여러 사이트를 찾아보며 어떤 특수문자가 무슨 일을 하는지 알아보는 것이 좋습니다. 나중에는 귀찮기 때문에 사이트를 통해서 이 패턴이 무슨 패턴인지 대충 알 수 있습니다.


 문자

 설명

 [ ]

 패턴 문자열을 구분하는 문자

 ^

 같은 행의 첫번째, 여기서는 첫번째 글자에 해당

 0-9

 0 이상 9 이하의 숫자

 , (쉼표, comma)

 이전 문자(패턴)에 대하여 하나이상 매치

 . (마침표)

 임의의 한 문자


이 패턴은 숫자, 특수기호(쉼표와 마침표)에 매치하며, 0부터 9까지의 숫자 그리고 임의의 문자가 들어가면 매치되는데 소스코드가 잘못되서 앞에 !가 빠졌는지 이상하군요. 하지만 정상적으로 클리어는 할 수 있습니다.


두번째 php의 eregi를 제외한 if 함수 두개는 user_lv의 값을 조건으로 걸어서 6이상이면 1로 설정하고 5 초과이면 클리어합니다.

그럼 5 초과 6 미만 중에서 골라야겠죠. 조건을 충족시키는 수많은 숫자가 존재하니 각자 선택하시면 됩니다.

답을 찾았으니 Edit this cookie 로 변경하거나 콘솔에서 document.cookie를 사용해서 변경하면 됩니다.






저는 2014년도에 이미 풀어서 이런 메세지가 떴습니다. 다른 분들은 축하하는 메세지가 뜰 것입니다.

'워게임 > 웹해킹kr' 카테고리의 다른 글

웹해킹kr 38번 문제 풀이  (0) 2016.05.24
웹해킹kr 54번 문제 풀이  (0) 2016.05.23
웹해킹kr 28번 문제 풀이  (0) 2016.05.23
웹해킹kr 12번 문제 풀이  (0) 2016.05.23
웹해킹kr 11번 문제 풀이  (0) 2016.05.03