[목차]
1. 페이지 접속 및 힌트 찾기
2. 콘솔 창 확인
3. 자바스크립트 파일 찾기
4. 코드 확인
5. 복호화 작업
6. 가입
1. 페이지 접속 및 힌트 찾기
아래 페이지에 접속한다.
우측 상단 [Join Now]를 클릭하면
다음과 같은 화면이 보이면서 초대 코드를 입력하라고 한다.
바로 아래
초대 코드에 대한 힌트가 주어져 있는데
이를 눌러보면 console 창을 체크해보라고 한다.
2. 콘솔창 확인
F12를 눌러 개발자 도구를 실행 > console 창에 가보면
다음과 같은 힌트가 주어지는 것을 확인할 수 있다.
이 페이지는 흥미로운 Javascript 파일을 로딩하니
한 번 찾아보라고 한다.
3. 자바스크립트 파일 찾기
찾는 방법은 여러 가지가 있는데
1) Elements 창을 클릭해 페이지 소스코드를 보면
/js/inviteapi.min.js
경로를 확인할 수 있고
해당 경로에 들어가 보면
알아보기 힘든 난독화 되어있는
자바스크립트 코드를 확인할 수 있다.
2) [Ctrl + u] 혹은 [view-source:url]
을 입력해 페이지 전체 코드를 확인해보면
파란 줄 가있는 경로들을 하나씩 확인해 보며
연관된 이름의 경로를 찾아보는 방법이 있다.
3) Souces 탭을 선택해
바로 코드를 확인해 보는 방법도 있는데
처음에는 뭐가 뭔지 모르기 때문에
꽤 오래 해멜 수 있다.
4. 코드 확인
우선 전체 코드
eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0 3(){$.4({5:"6",7:"8",9:\'/b/c/d/e/f\',g:0(a){1.2(a)},h:0(a){1.2(a)}})}',18,18,'function|console|log|makeInviteCode|ajax|type|POST|dataType|json|url||api|invite|how|to|generate|success|error'.split('|'),0,{}))
를 복사한 뒤 아래 페이지에 접속해 정리해보면
makeInvitecode()라는
함수를 확인할 수 있고
함수 내용에서
여러 관련 정보를 또한 얻을 수 있다.
POST / json 포맷의 데이터 /
/api/invite/how/to/generate URL
다시 invite challenge 화면에서
개발자 도구의 console 창 접속 >
makeInvteCode();
함수를 입력해 보면
다음과 같은 메시지를 확인할 수 있는데,
'힌트 : 데이터가 Base64 방식으로 암호화되어있다.'
왠지 해당 데이터를 복호화해주면 될 듯해
아래 base64 디코딩 사이트에서 복호화를 시도해보면
데이터의 중요한 부분이 복호화되지 않음을 확인할 수 있는데,
이는 콘솔 창에서 확인한 데이터 값의 중간 부분이 [...]으로 끊겨 있기 때문.
결국 데이터가 완전한 값이 아니므로 복호화에 실패했다.
5. 복호화 작업
우선 암호화된 데이터의 전체 값을 봐야 한다.
윈도우 cmd 창을 열어도 되고
리눅스 터미널을 열어도 된다.
열고 나서 아래 명령어를 입력하면,
# curl -X POST https://www.hackthebox.eu/api/invite/how/to/generate URL
출력 값을 보면
1) ROT13 방식
Va beqre gb trarengr gur vaivgr pbqr, znxr n CBFG erdhrfg gb \/ncv\/vaivgr\/trarengr
혹은
2) BASE64 방식
SW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhlIGludml0ZSBjb2RlLCBtYWtlIGEgUE9TVCByZXF1ZXN0IHRvIC9hcGkvaW52aXRlL2dlbmVyYXRl
으로 암호화된 데이터를 확인할 수 있고
복호화 시 ROT13 방식은
아래 페이지의 도움을 받거나
직접 복호화 프로그램을 만들어 돌리면 되겠고
base64 방식 역시 디코딩 사이트에서 해도 되고
암호화된 데이터를 파일에 저장 후 디코딩해도 된다.
출력 결과는 동일하다.
/api/invite/generate 페이지를
POST 방식으로 요청하면
초청 코드가 만들어진단다.
위에서 작업한 것처럼
curl -X POST URL로 요청해도 되고
프락시 도구로 변경 요청해도 된다.
위에서 한 번 해봤으니
이번엔 버프 스위트로 요청 변조를 해보자.
코드가 정상적으로 출력된 것을 확인 할 수 있는데
이것도 암호화되어 있다.
base64 사이트에서 디코딩해본다.
코드를 얻었다!
6. 가입
마지막으로 얻은 코드를 입력해 주면
축하 메시지와 함께 가입할 수 있게 된다.
가입 후 이메일 인증하면 완료!
열심히 하자!
'OSCP > HacktheBox' 카테고리의 다른 글
3. Popcorn (0) | 2021.04.18 |
---|---|
2. Lame (0) | 2021.04.17 |
1. Time (0) | 2021.04.16 |
Hack The Box VPN 및 박스 사용법 (2) | 2021.04.16 |
OSCP 시험과 비슷한 Box 리스트 (0) | 2021.04.16 |