CTF/MISC

[HouseplantCTF] I only see in cubes - MISC / binwalk / Minecraft

SecurityMan 2022. 6. 29. 11:00

 

오랜만에 쓰는 MISC 문제 write up

 

MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다.

 

사실 이 문제는 어떻게 보면 포렌식쪽이랑 관련이 있지 않을까 싶기도 하다.

 

반응형

 

문제 설명을 읽어보면 Jubie 라는 사람이 여행을하다가 책을 잃어버렸다고 한다.

 

책에는 중요한 작업들이 많이 들어있어서 꼭 찾아야 한다고 한다.

 

이 문제에서는 힌트도 제공되는데, 

 

힌트를 읽어보면 문제를 풀기 위해서는 마인크래프트가 필요 없다. 라고 적혀있다.

 

아무래도 마인크래프트와 관련된 문제인듯 하다.

 

 

문제파일로는 I only see in cubes rezip.7z 파일이 주어진다.

 

.7z 확장자는 zip 파일같은 압축 파일의 확장자이다.

 

zip 파일 압축풀듯이 그냥 압축을 풀 수 있다.

 

 

문제파일 압축을 풀면 이런 데이터들이 들어있다.

 

마인크래프트를 해본적이 없어서 잘 모르지만, 

 

마인크래프트 게임에서 사용하는 게임 데이터들이 저장된 파일들인거 같다.

 

 

맨 아래 있는 icon.png 는 이렇게 생겼다.

 

확실히 마인크래프트와 관련이 있는 문제이다.

 

 

나머지 폴더들에는 별다른 특이한 파일이 없었는데

 

region 폴더에 들어가보니 이렇게 .mca 확장자를 가지는 파일들이 많이 보였다.

 

찾아보니 .mca는 Minecraft anvil files 의 약자로 

 

마인크래프트의 맵 정보를 저장하는 파일인것 같았다.

 

 

어떤 내용이 있는지 자세히 보기위해

 

region 폴더로 접근해서 binwalk * 명령어를 이용해

 

모든 mca 파일을 살펴보았다.

 

그랬더니 모든 파일이 Zlib compressed data 로 구성되어있다는 것을 알 수 있었다.

 

 

binwalk -e * 명령어로 -e 옵션을 줘서 

 

region 폴더 안에 있는 모든 mca 파일에서 Zlib 데이터를 뽑아보았다.

 

 

추출하면 이렇게 각 mca 파일 이름과 똑같은 .extracted 폴더가 생성된다.

 

 

각 extracted 폴더로 들어가면 이렇게 추출된 데이터들이 들어있다.

 

2005 라는 파일이 있으면 2005.zlib 라는 파일도 같이 있는것이 보인다.

 

 

cat 명령어를 이용해서 각 파일의 내용을 보면

 

16진수로만 되어있는 파일은 깔끔하게 스트링이 출력되고 있으나

 

zilb 파일은 압축된 형태라 그런지 글자가 모두 깨져서 보이는것을 볼 수 있다.

 

 

어차피 알아볼 수 없는 내용이니 zlib 데이터는 모두 지워준다.

 

rm _r.*.extracted/*.zlib 명령어를 입력하면

 

모든 폴더의 모든 .zlib 파일을 한번에 지울 수 있다.

 

 

 

명령어를 실행하면 이렇게 된다.

 

이제 이 파일들 중에 플래그가 숨어있을거라고 가정하고 문제를 풀었다.

 

 

cat _r.*.extracted/* > flag.txt 명령어를 통해

 

모든 extracted 폴더 안에 있는 파일들 내용을 읽어 flag.txt 파일안에 저장해줬다.

 

 

cat flag.txt 로 내용을 살펴보면 이렇게 잘 들어가 있는것을 볼 수 있다.

(여전히 깨진 글자들은 존재한다.)

 

 

이번 대회에서 플래그 포맷이 rtcp 라는 단어로 시작한다는 것을 알고있었기에

 

cat flag.txt | grep -a "rtcp" 명령어로

 

flag.txt 파일 내에 rtcp 라는 단어가 있는지 확인해봤다.

 

그랬더니 rtcp{D0n't_d1g 라는 문자열이 나왔다.

 

플래그의 첫번째 부분이다.

 

출력된 결과를 살펴보니, 앞쪽에 page 라는 것을 이용해서 플래그를 출력시키고 있는듯 했다.

 

 

그래서 이번엔

 

cat flag.txt | grep -a "page" 로 page 단어가 들어간 부분을 모두 찾아내서

 

> a.txt 를 이용해 a.txt 파일에 결과를 저장하였다.

 

 

a.txt 파일을 열어보면 플래그의 모든 조각들을 찾을 수 있다.

 

조각들을 모두 합쳐서 써준

 

rtcp{D0n't_d1g_*str4ight_d0wn$} 가 이번 문제의 플래그이다.

반응형