Hack me - 2번문제

Hack me 2015. 7. 6. 20:05

안녕하세요. 오늘은 Hack me의 문제를 한번 풀어보겠습니다.

http://hack-me.org로 들어가셔서 Register 버튼을 눌러 회원가입을 하신 후 접속하시면 됩니다. 앞서 한 웹해킹과는 다르게 회원가입은 그냥 됩니다. 회원가입을 하셔서 로그인을 하셨으면 문제를 풀기 위해 상단의 Challenges(도전과제)를 눌러주시면 됩니다.

들어가시면 여러 문제가 보입니다. 첫번째 문제부터 쭉 살펴보니까 두번째 문제에 Easy 라는 문구가 확 띄는군요. 쉬운문제인것 같습니다. 한번 들어가 봅시다.


음.. 스테가노그라피에 관한 문제로군요? 제작진의 말에 따르면 너무 쉬워서 지겨울 수도 있답니다. 반대로 말하면 이것도 못풀면 바보라는 뜻이네요. 일단 힌트에 패스워드의 길이는 30이랍니다. 그리고 그 밑에 문구가 하나 있군요. Do you Know about Steganography?라고 묻습니다. 아무래도 스테가노그라피에 관해 알아야 문제를 풀 수 있을 것 같군요.

그리고 그 밑에는 색깔별로 사각형이 따닥따닥 붙어있고 각 사각형마다 글자가 적혀있습니다. FindPasswd 라고 적혀있군요. 음 패스워드가 대체 뭘까요?

일단 스테가노그라피란 뜻은 메세지가 전송되고 있다는 사실을 숨기는 기술입니다. 즉 풀어보면 여기에선 이미 패스워드가 전송되고 있다는 사실을 숨기고 있다라고 해석이 가능하겠군요. 그렇다면 이미 패스워드가 전송되었다 라는 뜻인데... 그러고 보니 저 사각형들이 굉장히 수상하군요. Findpasswd가 사각형위에 있다 라는 건 사각형에서 패스워드를 찾아라 라고도 해석이 되니까요. 그럼 사각형의 정체를 파악하기 위해 소스를 확인해 봅시다.

음 이미지군요. 그러고보니 이미지 이름이 거의 30자 가까인 걸로 보아 패스워드 일수도 있겠군요. 한번 입력해보겠습니다.

과연 될것인가? Auth를 눌러주세요.

... 안되는군요. 팅겨져 버렸습니다. 혹시나 세봤더니 32자이더군요. 그래서 뒤의 숫자2개를 빼고 넣었지만 팅겼고.. 앞의 두숫자를 뺏지만 팅겼습니다... 이름이 패스워드인것 아닌것 같군요. 그런데 이미지 이름이 파란색글자인 하이퍼링크로 되어있습니다. 한번 눌러봅시다.

사진하나만 딸랑 뜹니다. 으음. 그러다가 생각이 났습니다. 사진이니까 저장도 할 수 있지 않을까? 그래서 일단 저장해보기로 했습니다. 오른쪽 마우스 - 이미지를 다른 이름으로 저장 해서 자신의 컴퓨터에 저장해 주세요.

??? 분명 사진을 저장했는데 메모장이 뜹니다. 신기하네요. 메모장을 한번 열어봅시다.

무슨 알수 없는 글자들만 나와있습니다. 다만 훑어보니 영어가 다닥다닥 붙어있는 곳이 나옵니다. 얼핏 30자가 넘어보이는데 일단 HT부터 30자를 맞춰서 넣어보겠습니다.

네 아무래도 문제색깔이 초록색으로 된걸 보아 패스워드가 맞는것 같습니다. 

이것으로 2번문제풀이를 마치겠습니다. 감사합니다.

'Hack me' 카테고리의 다른 글

hack me - 15번 문제  (0) 2015.07.20
Hack me - 35번 문제  (0) 2015.07.15
Hack me - 4번문제  (0) 2015.07.13
Posted by englishmath
,

안녕하세요. 오늘은 webhacking 17번을 풀어보겠습니다. http://webhacking.kr - 로그인 - challenge - 17번으로 들어가 주세요.

빈칸과 체크버튼이 있습니다. 흠 무슨 뜻일까요. 일단 문제를 알아내기 위해 오른쪽 마우스 - 소스보기를 눌러줍시다.

script부분에 무슨 복잡한 계산식이 있네요. 그리고 그 밑에는 if(login.pw.value==unlock){ alert("Password is "+unlock/10); }else { alert("Wrong"); } 라고 되어있네요. 해석해보면 unlock에 저 계산식의 값을 저장하라. 그리고 만약 login.pw.value의 값이 unlcok의 값과 같으면 Password is +(unlock/10)을 출력하고 아닌경우엔 Wrong를 출력하라. 라고 되어있습니다. 일단 딱봐도 unlock을 계산해야 문제가 풀릴 것 같습니다. 그런데 또 저걸 일일이 계산하는 분은 없을거라고 봅니다. 그럼 계산기를 이용하느냐? 그것도 귀찮지 않습니까? 그래서 정말 간단하게 풀어봅시다. 아래그림처럼 자바스크립트 콘솔로 들어갑니다.

창이 열리면 unlock=부터 9999999999; 까지 복사하여 붙어주세요. 그리고 엔터를 눌러시면 아래그림과 같이 답이 나옵니다.

음 unlock의 값은 구했습니다. 그런데 아까 소스에서는 unlock의 값이 login.pw.value와 같을경우 패스워드를 출력한다 했으니 즉 login.pw.value의 값이 9997809307이 되어야 합니다.그럼 대체 login.pw.value은 뭘까요? 알아내기위해 오른쪽 상단메뉴 - 도구 더보기 - 개발자도구를 눌러주세요. 

login.pw.value 란 해석하면 form name이 login이고 이름이 pw인 것의 값이라는 소리입니다. 조건에 맞는 소스를 찾아 눌러보니 왼쪽화면에 블록이 딱 잡히는군요. 즉 저 블록잡힌 것이 login.pw라는 뜻입니다. 값이라는 것은 저기에 입력한 값을 말하겠지요. 자 그러면 이제 패스워드를 알아내기 위해 login.pw에 unlock값을 넣어봅시다.

소스에 나온대로 패스워드가 나오는군요. 자 이제 패스워드를 입력해봅시다.

??? 패스워드를 그대로 입력했더니 틀렸다라는 문구가 나왔습니다. 다시한번 소스를 봅시다. 보시면 아시겠지만 login.pw의 값이 unlock값이랑 같을때에는 패스워드를 출력하지만 틀렸을 경우에는 wrong을 출력합니다. 즉 login.pw의 값에는 9997809307의 값 외에는 무조건 Wrong을 출력한다는 소리입니다. 다른 말로 패스워드를 알았지만 login.pw에 넣어선 안된다. 라는 뜻이 되겠네요. 그리고 무엇보다 소스에 solve()가 없습니다. 해결하라라는 함수자체가 존재하지 않기 때문에 이 페이지내에선 문제를 해결할 수 없다는 것입니다. 일단 문제를 해결하기 위해 뒤로가기를 눌러 메인메뉴로 나와봅시다. 답을 어디다 적어야 될까요? 적을만한 곳을 찾기 위해 메뉴를 전부 뒤져봅시다.

forum은 토론회, msg은 message(메세지)의 약자, challenges는 도전과제, auth는 authentication(인증의 약자), rank는 순위 , service는 말그대로 서비스, friendly는 관련사이트 인것 같습니다. 메뉴를 살펴보니까 도전과제 옆에 적혀있는 인증이 맘에 걸리는군요. Auth를 눌러봅시다.

Flag라는 칸이 나오는군요. Flag는 원래 깃발이란 뜻이지만 컴퓨터계에서의 Flag는 프로그램 실행중에 특정 상태가 성립했는지의 여부를 식별하기 위하여 조사되는 데이터의 항목입니다.즉 여기가 인증하는 곳 인것 같으니 여기에 아까 패스워드라고 나왔던 999780930.7을 입력해봅시다. 다 입력한 후 submit(제출)를 눌러주세요

짝짝 참 힘들게 풀었습니다.

감사합니다.



'Webhacking' 카테고리의 다른 글

Webhacking - 27번문제  (2) 2015.07.10
Webhacking - 문제24번  (0) 2015.07.10
Webhacking - 문제 11번  (0) 2015.07.08
webhacking시작 - 문제1번  (0) 2015.07.04
webhacking시작 - 회원가입  (0) 2015.07.04
Posted by englishmath
,

안녕하세요. 오늘은 webhacking의 문제1번을 풀어보겠습니다. www.webhacking.kr에 들어가서 로그인을 합시다. 

로그인을 하셨으면 위와 같은 화면이 나옵니다. 그리고 상단의 Challenges 를누르고 문제 1번을 누릅니다.

level : 1이라고 적혀있는 사이트가 나오고 밑에 index.phps가 있습니다. 흠 뭘 어떻게 해야 풀 수 있을까요? 문제도 안나와있습니다. 일단 이 사이트 정체를 파악하기 위해 오른쪽 마우스 - 소스보기를 클릭합니다.

여기서 주목할 부분은 12번줄에 있는 명령어입니다. 해석하면 a onclick = 누르면 , location.href 'index.phps' = index.phps란 페이지로 이동한다. 라는 뜻인데 그럼 무얼 클릭해야 이동할까요? 뒤쪽에 보시면 글자가 있죠. index.phps 즉 화면에 나와있는 글자입니다. 즉 index.phps를 누르면 index.phps 페이지로 이동한다. 라는 뜻이 됩니다. 그러면 한번 눌러 봅시다.

아까보다 알아보기 힘든 소스가 나옵니다. 마치 영어문제 푸는 것 같습니다. 다른건 머리아프니까 보지말고 solve() 함수쪽을 봅시다. solve()함수는 해결한다. 라는 뜻으로 앞으로도 이런문제를 풀때에는 solve()를 유심히 봐야합니다. solve() 함수 앞에 if문이 있네요. 다들 아시다시피 if문은 조건식으로 if 가로 안의 조건이 맞다면 그 다음걸 실행하라 라는 뜻입니다.

즉 이문제는 COOKIE[user_lv)이 5보다 크면 해결된다 라고 적혀있습니다. 그런데 바로 위의 조건을 보시면 COOKIE[user_lv)이 6보다 크거나 같으면 1을 반환하라고 되어있습니다. 쉽게 말해 COOKIE[user_lv)값에 6이상의 숫자를 넣으면 강제로 COOKIE[user_lv)값이 1로 저장된다는 것입니다. 그런데 1은 5보다 작은 숫자이기 때문에 문제가 해결되지 않습니다. 그렇다면 COOKIE[user_lv)값에 6이상의 숫자를 넣으면 안된다라는 결론이 나옵니다. 

정리를 하면 COOKIE[user_lv)값에 6이상의 숫자를 넣으면 안된다. 그런데 해결할려면 5보다 큰 수를 넣어야 한다. 즉 5보단 크고 6보단 작은 수를 넣어줘야 합니다. 문제자체는 풀었습니다. 그런데 이제 이 정답을 어디다가 넣어야 할까요? 아까 페이지에선 정답을 넣는 칸이 없었습니다. 소스를 보니 숨겨진 것도 아닙니다. 이럴때에는 변수즉 COOKIE[user_lv)를 잘 봐야합니다. 쿠키란 뭐 일반적으론 먹는 과자 이름이지만 컴퓨터내에서 쿠키란 웹사이트에 접속할 때 자동적으로 만들어지는 아이디, 비밀번호, IP주소 등의 정보를 담고 있는 일종의 정보파일입니다. 우리는 그 쿠키에 값을 넣어줘야 하므로 쿠키를 관리할 필요가 있습니다. 그래서 쿠키를 관리할 수 있게 도와주는 일종의 프로그램을 설치해 봅시다. 마침 크롬 웹 스토어에 좋은 프로그램이 있으므로 그 프로그램을 사용해 봅시다.

https://chrome.google.com/webstore/에 들어가 쿠키 라고 치고 검색을 하여 아래그림처럼 EditThisCookie를 찾아 'CHROME에 추가'버튼을 눌러주시면 됩니다.

추가가 완료되었으면 오른쪽 상단위에 쿠키모양의 버튼이 생깁니다. 자 이제 아까 들어왔던 문제 1번 화면으로 갑시다. index.phps에서 그냥 뒤로가기버튼을 누르시면 됩니다. 화면으로 돌아왔으면 오른쪽 상단의 쿠키버튼을 눌러봅시다.

보니까 user_lv라는 변수명이 보이네요. COOKIE[user_lv)의 그 user_lv입니다. 자 이제 값만 바꿔주면 됩니다. 값에 1이라고 적혀있으니 지우고 5와 6사이의 값을 적어주세요. 저는 그냥 5.5적겠습니다. 다 적었으면 밑의 V버튼을 눌러주세요. 수정이 완료되었으면 쿠키를 닫고 F5버튼을 눌러주세요.

흠 축하한다네요. 


네 이렇게 첫번째 문제를 풀었습니다. 200점 주네요. 이 점수가 어따 쓰이는지는 모르겠지만 점수가 높은 문제일수록 더 어려워진다는 것만 아시면 됩니다.

감사합니다.




'Webhacking' 카테고리의 다른 글

Webhacking - 27번문제  (2) 2015.07.10
Webhacking - 문제24번  (0) 2015.07.10
Webhacking - 문제 11번  (0) 2015.07.08
webhacking시작 - 문제17번  (6) 2015.07.05
webhacking시작 - 회원가입  (0) 2015.07.04
Posted by englishmath
,