$ Capture The Flag $

X-MASCTF Write up

ws1004 2019. 12. 21. 22:51

Forensic

 

Santa's Forensics 101

파일을 다운 받고 열어보면 사진파일이 하나 있습니다.

하지만 열리지는 않으니 HxD를 이용해서 확인을 해보면 아래와 같습니다.

 

ZIP 파일입니다.

압축을 해제해 보면 아래와 같은 폴더가 나옵니다.

 

 

사진에는 뭐 없는것 같아 보입니다.

HxD로 열어서 확인을 해보겠습니다.

 

Footer Signature 뒤에 Flag가 존재 합니다.

 

Flag : X-MAS{W3lc0m3_t0_th3_N0rth_Pol3}

 

Santa's letter

해당 문제를 한번 확인해 보겠습니다.

 

여기서 얻을 수 있는 숨겨져 있는 힌트는 Invisible lnk 와 Hide&Seek 입니다.

첨부 되어 있는 사진은 아래와 같습니다.

 

HxD로 확인해 보면 아무런 이상한 점이 없습니다.

힌트를 바탕으로 Steganography 를 적용한 Tool을 찾아야 합니다.

Digital Invisible lnk 라는 툴이 존재합니다.

Digital Invisible lnk : http://diit.sourceforge.net/

 

diit-1.5.jar 파일을 가지고 실행을 해보겠습니다.

 

 

이제 실행을 해보면 aaa 파일로 flag가 출력이 됩니다.

 

Flag : X-MAS{NOBODY:_SANTA:Hyvää joulua!}

 

DDoSing X-MAS

해당 파일은 ddos 를 발생 하는 실행 파일입니다.

하지만 첨부 되어 있는 파일은 chall 파일로 hex값이 암호화 되어 있습니다.

 

해당 파일을 원본 파일로 복호화 해보겠습니다.

복호화 키는 '\x24'+'\x32'+'\x50'+'\x52'+'\xb2'+'\x8c'+'\x96' 입니다.

ELF 파일이라고 했기 때문에 .ELF 기준으로 수정하면 될것 같습니다.

 

복호화를 하면 아래와 같이 ELF 실행파일이 출력되게 됩니다.

 

실행을 해도 아무런 FLAG를 출력해주지 않아서 리버싱적인 접근 방식을 이용했습니다.

IDA로 파일을 열어보면 아래와 같은 변수에 값이 들어있습니다.

 

이런식으로 같은 길이의 변수가 들어가 있었습니다.

python 코드를 이용해서 xor 한 값을 출력해 보겠습니다.

 

Flag : X-MAS{N0w_go_l0ic_th3_n00bz}

 

 

Reverse Engineering

 

Santa's crackme

IDA를 이용해서 문제를 풀어보면 아래와 같습니다.

 

flag_matrix에 있는 값을 xor 3 을 하면 flag를 출력해 줍니다.

 

 

Flag : X-MAS{54n74_15_b4d_47_l1c3n53_ch3ck1n6}

 

 

MISC

 

FUNction Plotter

Remote Server을 연결해 보면 아래와 같습니다.

 

961개의 값을 guess 즉, Guessing(추측)을 하는것 같습니다. 또한 입력안하고 좀있으면 exit 되는 것 으로 보아 timeout이 걸려있는 것 같습니다.

위의 값의 연산이 어떻게 이루어 지는지는 모르겠지만 위의 결과의 값은 0 or 1로 결정 됩니다.

 

그래서 해당 결과를 딕셔너리로 만들어서 파일을 하나 만들어 줍니다.

해당 파일을 가지고 똑같은 값이 나오면 그에 맞는 값을 전달하는 코드를 작성해 보겠습니다.

해당코드를 전부 실행을 하면 Great! You did it! Now what? 문자열이 출력이 되지만 flag를 주지는 않습니다.

 

그래서 곰곰히 생각해본 결과 아까 딕셔너리로 만든 파일에서 f(value, value)를 좌표 라고 생각을 했고, 결과가 1인 곳을 검은색으로 찍어 봤습니다.

 

 

해당 QR Code를 인식해 보면 Flag 를 출력해 줍니다.

 

Flag : X-MAS{Th@t's_4_w31rD_fUnCt10n!!!_8082838205}

 

45 Shades of Chrismas

첨부 되어 있는 사진을 보면 회색계열의 픽셀들이 찍혀 있습니다.

픽셀값을 뽑아내서 int to str 을 해보겠습니다.

 

하지만 출력된 base64 문자열들이 복호화를 해도 복호화가 되지 않습니다.

그래서 픽셀 값을 세로로 출력해 보았습니다.

 

출력한 값중 복호화가 되는 값을 표시해 보았습니다.

 

맨 아래의 base64 코드가 flag 였습니다.

 

Flag : X-MAS{Gl43d3ligJul0gG0dtNyt4r}

 

Noise

문제의 파일에는 wav 파일이 존재 합니다.

해당 파일을 Audacity Tool을 이용해서 열어보겠습니다.

 

스펙트럼으로 바꿔서 보면 총 2가지의 음역대가 존재 합니다.

위의 스펙트럼은 사람의 목소리에 관한 스펙트럼이고, 아래의 스펙트럼은 지지직 거리는 특정 주파수에 관한 스펙트럼입니다.

 

위의 스펙트럼을 제거해서 들어보면 해당 음성은 우주에서 통신을 할때 사용하는 음성임을 확인 할 수 있습니다.

 

아래의 wav 파일이 사람의 음성을 제거한 파일입니다.

해당 파일을 플레이스토어에 있는 Robot36에서 복호화를 넣으면 아래와 같이 출력이 됩니다.

 

Flag : X-MAS{Wh1T3N0Is3}

 

Best Friends

첨부 되어 있는 사진을 확인해 보면 아래와 같은 매우 작은 사진인 것을 확인 할 수 있습니다.

 

해당 파일을 exiftool을 가지고 문제를 확인해 보겠습니다.

 

Comment에 문자열이 존재 합니다.

해당 문자열은 base64로 복호화를 해보겠습니다.

 

복호화를 하면 아래와 같이 출력을 합니다.

 

해당 문자열은 base32로 복호화 하면 문자열이 출력합니다.

 

해당 결과를 문자열로 변환을 해보면 아래와 같습니다.

 

 

B . F . 는 Best Friend 가 아닌 다른 거라고 이야기 하고 있습니다.

BF를 BrainFuck 인줄 알았으나 Bruteforce 라는 것을 알게 되었습니다.

 

Steganograhpy 와 BruteForce 를 결합한 Tool을 찾아 보니 Stegcracker 라는 툴이 있었습니다.

Stegcracker Tool Install : https://github.com/Paradoxis/StegCracker ,  https://gbhackers.com/stegcracker-brute-force-utility/

 

설치 방법!

 

해당 툴을 설치하고 아래와 같이 명령어를 입력하면 파일이 하나 출력이 됩니다.

 

출력된 파일을 보면 아래와 같습니다.

 

해당 문자열을 base85로 복호화를 해보겠습니다.

 

Flag : X-MAS{Th3y_s@y_th4t_4n_AI_1s_4_hUm4ns_b3st_fr1end_cbdadfe1206409ac}