오늘은 16번 문제를 풀어보았다. 어제 9번 문제를 풀려고 했으나, 나에게 많이 부족한 리버싱 문제였다. 그래서 공부를 한 다음에 문제를 풀 예정이다.
16번 문제를 들어가 보면 'Can you find the password for a member of SuNiNaTaS.com' 라는 문구가 존재한다. 써니나타스 회원의 패스워드를 찾으라는 말 같다. 그리고 바로 밑에 'Download'가 있었다. 그래서 바로 다운로드를 진행했다.
다운로드를 한 파일을 확인해보면 'pacp'파일로 나온다. 해당 파일은 packet capture로 패킷을 캡처한 파일이다.
그래서 나는 'WireShark(와이어샤크)'라는 툴을 이용해서 확인해보기로 했다. 해당 툴은 통신이 이루어진 패킷을 캡처해서 사용자가 쉽게 알 수 있게 해주는 도구이다. 밑에 화면은 와이어샤크를 실행한 화면이다.
와이어샤크에서 검색 기능이 있는데, 써니나타스의 비밀번호를 알아내기 위해서 http로 패킷을 주고받았을 가능성이 크다. 그래서 아래의 화면처럼 검색 기능에다가 http라고 입력했다.
protocol이 http인 것들만 모은 상태에서 'info'를 클릭하면 http기준에서 또다시 정렬이 이루어진다. 여기서 'POST' 부분만 확인을 진행할 것이다.
'POST' 부분을 확인해보면 id와 pw를 확인할 수 있을 것이다. 'POST'는 한개가 아니라 여러 개가 존재하는 데 전부 찾아봐서 로그인을 진행했다.
'POST' 값에 있는 id와 pw를 이용해서 로그인을 하면 키값을 얻을 수 있다. 로그인을 성공하면 아래와 같은 팝업창을 볼 수 있었다.
이제 찾은 키 값을 넣으면 축하한다는 팝업창과 함께 문제가 풀리는 것을 확인 할 수 있다.
3번 문제를 들어가면 아래의 화면처럼 보인다. "Write articles in Notice Board!"라고 써 있을 뿐, 그 외에는 아무것도 존재하지 않는다. 영어를 해석해보자면, Notice Board에 articles(기사, 글)을 작성하라고 한다. 단순히 이것만 보았을 때, 이해가 잘 가지 않았다.
그래서 나는 페이지 소스코드를 한번 확인해보기로 했다. 숨겨져있는 코드들도 전부 확인해보았지만, 얻을 수 있는 것이 없었다. 그래서 첫 화면에서 Notice Board에 글을 작성하라는 문구 그대로 써니나타스 메인화면으로 이동했다.
메인화면에서 'NOTICE' 메뉴에 들어갔다. 'NOTCIE' 페이지에는 글을 작성할 수 있는 버튼이나 방법이 존재하지 않았다. 3번문제에서 분명 NOTICE에 글을 작성하라고 했는 데....
그래서 다른 메뉴도 들어가서 글을 작성할 수 있는지 확인해보았다. 'FREE'라는 메뉴에 들어가니 'Write'라는 글을 작성할 수 있는 버튼이 있었다.
해당 버튼을 누르니 'FREE WRITE'라는 새로운 페이지로 넘어갔고, 이때 중요한 것은 URL이 "suninatas.com/board/free/write"라는 것이다. 이것을 NOTICE에 그대로 가져와서 사용하려고 한다.
바로 아래의 화면처럼 말이다. 아까전에 봤던 'FREE'의 WRITE URL처럼 'NOTICE'도 기존 NOTICE URL 뒤에 '/write'을 적으면 "NOTICE WRITE"라는 게시물을 작성할 수 있는 페이지로 이동한다.
이동한 페이지에서 'TITLE'과 'CONTENT'에 아무 글자나 넣고 'SUBMIT'을 눌러 제출하면 끝이다!
오늘(3.13)은 어제 6번 문제에 이어서 7번 문제를 풀기로 했다. 하얀색 바탕이 파란색 바탕으로 바뀌는 것을 보니 기분이 좋았다. 하나씩 채워가는 모습을 보면서 이런 맛에 문제를 푸는 것 같다.
7번 문제를 클릭하게 되면 아래의 사진처럼 처음에는 아이유 사진이 나온다. 아이유 사진 위에는 'Do U Like girls?'라는 문구와 함께 스크롤을 내리다보면 끝부분에서는 윤아 사진을 볼 수 있다. 맨 처음에 문구는 단순히 물어보는 문구인 것 같다. 해당 박스에 난수 값을 입력해도 아무일도 일어나지 않았기 때문이다.
(처음에 아이유 사진이 엄청 크게 나와서 놀랐다......)
그리고 아이유와 윤아 사진 중간에 'YES' 입력 버튼 하나가 덩그러니 있었다.
(뭘까...?)
저렇게 덩그러니 있는 것들은 한번 눌러보고 싶은 욕구가 생기기 마련이다. 그래서 바로 클릭해봤더니 아래와 같은 팝업창이 떴다.
'실패... 내가 너무 느리다'라고 한다.... 이제 해당 페이지에서는 아무것도 발견할 수 없어서 html 소스코드를 확인해보기로 했다. 들어가자마자 힌트가 있었다.
'Faster and Faster'
힌트는 빠르게 하라는 데 어떤걸 빠르게 하는지 감이 안잡혔다. 그래서 소스코드 안에 숨겨져 있는 것을 자세히 확인해보기로 했다.
<head>부분을 확인해보니 스크립트를 발견했다. 이벤트 부분인 것 같았다.
(이벤트 : 사용자가 어떤 행동을 취했을 때, 그로 인해서 변화가 이루어지는 것을 말한다. 여기서 행동은 "사용자가 클릭했을 때", "스크롤을 내렸을 때" 등을 의미한다.)
소스코드 해석
function noEvent() { // noEvent라는 함수
if (event.keyCode == 116 || event.keyCode == 9) { // keyCode가 116,9일때 실행한다.
alert('No!'); // 'No!'을 출력한다.
return false; // false 값을 반환한다.
}
else if (event.ctrlKey && (event.keyCode = 78 || event.keyCode == 82)) {
// Ctrl을 누르면서 keyCode 값이 78이거나 82일때 실행한다.
return false; // false 값을 반환한다.
}
}
document.onkeydown = noEvent; // 행동을 했을 때 noEvent 함수가 실행된다.
더 자세히 설명하자면
event.keyCode
해당 함수는 Javascript로 사용자의 키 입력을 감지하는 함수입니다. 아래 표는 event.keyCode 모음을 나타낸 것이다.
즉, 해당 소스코드
event.keyCode == 116 || event.keyCode == 9
116은 'F5', 9는 'tab'으로 7번 문제 페이지에서 'F5'와 'tab'을 입력시 'No!' 팝업창이 출력되고 false 값을 반환하는 것이다.
오늘은 'Suninatas(써니나타스)' 문제를 풀기로 했다. 매번 100점 문제들만 풀다 보니 실력이 늘지 않는 것 같아서, 오늘은 4번 옆에 있는 301 point 5번 문제를 풀기로 했다. 1번부터 5번까지 보면 4번까지는 100점대인데 5번만 300점대이다. 처음에는 살짝 겁이 났지만 그래도 할 수 있을 거라 생각했다.
5번 문제를 들어가면 아래의 사진처럼 'Check key Value' 라고만 나와있었다. 문제를 처음 접했을 때 생각은 네모 박스 안에 올바른 key 값을 넣으면 되는 것 같았다. 그럼 이제 키값을 넣어야 하는데 화면에는 아무것도 없으니 'F12'을 눌러 화면 자체의 코드를 확인해보았다.
소스코드를 확인해보니(아래의 사진) 힌트로 숫자 '12342046413275659'가 보였다. 이것을 이용해서 문제를 해결하는 것 같다.
(사실 이 값을 그대로 네모박스에 넣어봤다.... 힌트라고 그래서.... 하지만 아무 일도 일어나지 않았다ㅜㅜ)
주석으로 힌트처리된 거 말고 제대로 된 소스코드를 확인해보고자 숨겨져 있는 코드들을 확인하기 시작했다. 그랬더니 아래의 사진처럼 복잡해 보이는 스크립트가 존재했다. 이것을 보고 해석하려고 했지만 실력이 없어서 무슨 소리인지 한참을 들여다보았다.
한참을 봐도 무슨 소리인지 몰라서 머리가 지끈거릴 때, 아래에 'Authkey'값에서 힌트를 얻었다. 'Unpacking JavaScript'라는 힌트를 통해 해당 소스코드가 'Packing'되어 있다는 걸 깨닫고 문제를 풀었다.
해당 스크립트가 'Packing' 되어 있으니 'Unpacking'을 시도해줘야 한다. 나는 그래서 대신 'Unpacking' 해주는 사이트를 이용하기로 했다. 아래 사이트가 대신해주는 사이트이다.