말 많았던 핵테온 세종
https://www.dailysecu.com/news/articleView.html?idxno=145171
대회 운영, 문제 퀄리티, 게싱 문제 논란 등 예선이랑 달라진 것이 없다.
참가자 숙소가 카라반인거, 식사 제공, 늦은 대회 안내 등의 문제도 있고
디스코드 채널은 만들고 대회 끝나면 싹 닫아버리고
외국 참가자들도 있는데 본선 일정 중 공지와 qna는 카카오톡 오픈 챗방?
오픈 챗방도 행사 종료됐다며 바로 닫아버렸다.
https://www.boannews.com/media/view.asp?idx=116956
https://www.dailysecu.com/news/articleView.html?idxno=146065
일단 포렌식이랑 Misc 두 문제를 보자.
일단 Misc
문제 설명은 Find a key가 다다.
Travel 파일이 주어지는데, 압축파일이다.
.zip을 붙여서 열어보면 ms office word 파일임을 알 수 있다.
Final 폴더 내의 파일들을 압축을 풀어내고 다시 압축을 해서 .doc로 파일명을 바꾸면 열 수 있다.
뒤에 연결된 이미지를 표시할 수 없다는 내용은 해당 이미지가 rId4 -> media/image1.png 를 참조하는데, media/image1.jpg는 있지만 image1.png는 없기 때문이다.
media 폴더에 이미지 파일이 많이 있다.
Sejong Tour Plan!!.png 이미지를 보면 4곳의 스탬프를 모아서 플래그를 찾으라는 것으로 보인다.
binwalk 명령어를 사용해서 Sejong Tour Plan!!.png 이미지에 표시된 이미지에 해당되는 파일 image2.png, image5.jpg, image7.jpg, image9.jpg에서 end시그니쳐 뒤에 붙어있는 다른 이미지 파일을 분리해낼 수 있다.
이를 방법을 통해 Stamp 이미지 4개를 찾을 수 있으며, 각 스탬프 이미지에 문자열이 있는데, 4개를 이어서 base64 디코딩을 하면
you_are_a_white_hacker
가 된다.
그리고 깃발 그림이 있는 image12.jpg에서 zip파일을 분리해낼 수 있으며 안에 flag.txt가 있으나 암호가 걸려 있다.
그리고 image8.jpg는 실제론 docx 파일이며, 열었을 때 XOR KEY라는 값을 얻을 수 있다.
해당 hex 값을 ascii로 바꾸면
this_is_xor_key_value_
가 된다.
value하고 _로 끝나는 걸 봐서는 두개를 합쳐 this_is_xor_key_value_you_are_a_white_hacker 를 만들고 이거랑 xor 할 값을 넣어야 할 거 같은 느낌이 드는데,
XOR_Key 로 준 hex값과 스탬프를 모아서 만든 you_are_a_white_hacker의 hex 값 0x796F755F6172655F615F77686974655F6861636B6572을 서로 xor 해서 나온 결과 값 0xd071c2c3e1b16001930053702111c001e000f1e002d을 10진수로 변환한 값이 zip파일의 패스워드다.
그렇게 zip파일 암호를 풀어서 flag.txt을 얻을 수 있다.
일단 플래그를 3~4 등분을 내서 xor을 하고 파일 이곳 저곳에 숨겨 놓는건 예선에서 나왔던 문제랑 다를 게 없다.
그리고 찾아낸 값들은 다 ascii 범위의 값을 주고서는 정작 zip 파일의 패스워드를 구하는 건 ascii 범위를 벗어나는 값.. 최소한 zip 패스워드처럼 생기도록 만들었어야 하는거 아닌가
0xd071c2c3e1b16001930053702111c001e000f1e002d -> ÐqÂÃá±`Sp!Ààñàd
아니 10진수로 입력해야하는 것에도 아무런 근거가 없다. 정작 XOR_Key 값은 정확하게 Hex 형태로 줬다. 스탬프에는 base64로 주고서는, ascii도 hex도 base64도 아니고 10진수?
다음은 포렌식 문제
문제 설명이 아마 두 명이 서로 비밀 메세지를 교환했다는 거였던걸로 기억하는데
문제 설명만 보고 이번 본선에서도 예선처럼 더러운 패킷 문제를 냈구나라고 생각했었다.
근데 이번엔 rar 파일과 pdf 파일이 주어졌다. (근데 또 문제설명은 문제와 아무런 연관이 없다.)
rar 파일에는 암호가 걸려있다. 그 암호를 se.pdf에서 찾아야 하는 것으로 보여진다.
/JS 에 하나
JS object에서 링크 하나를 얻을 수 있고
Annotation object도 있는데
맨 앞 값 순서대로 문자열을 배치하면 w24<P%96o~?R}_S`T 가 되고, 이를 ROT47을 돌리면 Hack!The@On#N0$1%가 된다.
왜 Annotation에 저런 값이 있는가? -> 그냥 숨겨놓은 위치
왜 ROT47인가? -> 앞에 ROT라고 키워드를 줬으니까..? "그냥"
그리고 압축을 푼 파일에 또 확장자 없는 파일이 하나 있는데 오디오 파일이다.
해당 파일의 오디오 스펙트럼에서 hex 값을 확인할 수 있다.
해당 hex값과 처음 JS object에서 얻은 링크에 있는 이미지 속의 25와 xor을 하면 플래그가 나온다.
아, 10진수 25가 아니라 16진수 0x25다. 왜? -> "그냥"
이게 포렌식인가..
'CTF Write Up' 카테고리의 다른 글
사이버보안챌린지 2023 문제풀이 manipulation (0) | 2023.09.20 |
---|---|
Codegate2023 quals [n³] (0) | 2023.06.26 |
PwnMe CTF 2023 Write up (0) | 2023.05.06 |
제8회 BoB 정보보안 CTF(BISC) (5) | 2022.09.09 |
San Diego CTF 2022 Forensics write up (0) | 2022.05.09 |