2025. 4. 27. 22:29ㆍreview 및 write up
개요
어쩌다 보니 출전하게된 첫CTF인 핵테온 세종 2025
기존 명지대 MJSEC동아리회원이자 화이트햇3기 멤버들끼리 출전하게되었다. 비록 예선 광탈이었지만, 첫 대회치고 만족스럽게 문제를 푼 것같아(사실 쉬운 문제만 풀었지만) 간단하게 푼 문제들을 리뷰해보려고 한다
Forgotten Past (Web)
들어가보니 영문으로된 페이지가 하나 나오길래 번역기에 돌려보았다

번역해보니 legacy ux, "오래된 로봇 인터페이스" 관한 글 내용과 문제 제목이 잊혀진 과거라는 점, 그리고 We even discovered one of these panels still active on a forgotten test server 라는 문구에서 예전에 쓰였던 패널이 아직도 남아있다고 생각하고
관리자 페이지나 중요 페이지를 숨기려고 robots.txt에 디렉터리 경로를 적어놓는 경우가 있다하여 /robot.txt에 접속해보니

바로 old site로 접속하는 경로를 보여주었고, /old_site로 들어가보니 css만 없는구성에 로그인기능이 추가되어있었다

그래서 로그인페이지의 소스코드를 보니 admin일경우 접속되는 url이 대놓고 나와있어 들어가보니 flag를 획득할 수 있었다.
Watching (Forensics)

문제 파일은 다음과 같이 구성되어있었다.
bmc라는 확장자를 처음보아 구글링을 해보니 BitMap Cache의 약자로 윈도우의 원격 데스크톱 연결기능을 사용하면 생성되는 파일로 접속한 PC화면을 그래픽형태로 캐싱한다고 써있었다.
공교롭게도 bmc 확장자를 검색하는 과정에서 bmc파일 포렌식 write up을 작성한 블로그를 보게되어 수월하게 진행할 수 있었다.
https://hackingstudypad.tistory.com/129
[Root Me] Job Interview - 포렌식 / RDP Cache / BMC
Root Me는 포렌식 문제가 재밌는거 같다. 문제 설명을 읽어보면 미국 국가안보국(NSA)에 포렌식 수사관으로 면접을 갔는데 주어진 파일을 분석해서 실력을 증명해야 한다고 한다. 이정도 수준의 문
hackingstudypad.tistory.com
git clone https://github.com/ANSSI-FR/bmc-tools깃 클론으로 bmc 분석 툴을 가져와주고

bmc파일을 분석하려하니 실패했다!
그래서 그 이유를 찾아보니 bmc 의 복원 과정은 다음과 같았다
- .bin 파일: 각 bitmap entry의 위치, 크기, 해시 정보 등을 담음
- .bmc 파일: 실제 bitmap data를 담고 있음
- 복원 과정: .bin을 파싱 → .bmc에서 데이터 추출 → BMP 이미지로 변환
복원방법은 bmc파일과 bin파일을 같은 경로상에 넣고
python3 bmc-tools/bmc-tools.py -s Cache0000.bin -d ./bmcsbin을 분석해주니 bmp파일이 bmcs 파일안에 생성되었다

그 결과 나온 파일은 1937개로 분할된 윈도우 화면 캡처였고 메모장에 플래그가 적혀있는것 같아 유심히보니
S0m~ w4tch1ng 이런식으로 문구가 맞춰지기 시작했다
문제 제목이 Watch라는 점에서 문장을 조합해보니 someone is watching my pc 같은 형태가되어 포맷대로 flag를 제출하였더니 정답이였다!
CAT(MISC)
문제는 27AC620A35D509F992EDC3F06DB3EC04C3610AE52F24F3CF13F29662EB4EF4F2라는 해시를 복호화 하라는 것이였고 힌트는 ?l?d?l?l?l?d!?d?d이 주어졌다
처음에는 해시를 주어진 힌트에 맞춰서 임의로 맞추라는 건가 싶었지만 아무리봐도 아니다싶어 gpt의 힘을 빌리기로했다


그리고 gpt는 신이였다
문제 제목이 cat인걸 보자마자 딱봐도 hashcat이 맞겠다 확신이 들었고 hashcat을 검색해보니 GPU를 사용해서 빠르게 복호화하는 방식이라 wsl 우분투에서 hashcat을 설치해 진행하였다
$ apt install hashcat

hashcat에는 다양한 공격 옵션들이 존재하는데
해시값이 16진수로 64자라는 점에서 SHA-256에 부르트포스 방식을 선택했다
hashcat을 사용하려면 먼저 임의의 txt파일을 만들고 그안에 해시값을 넣어줘야한다
echo 27AC620A35D509F992EDC3F06DB3EC04C3610AE52F24F3CF13F29662EB4EF4F2 > hash.txt
그다음 모드 옵션을 선택하여 디코드한다
hashcat -a 3 -m 1400 hash.txt '?l?d?l?l?l?d\!?d?d'
원래는 복호화 완료시 원본문자열을 바로 출력해주지만 다시 보고싶다면

다음과 같은 명령어를 입력해주면된다
원본 문자열은 h4chkm3!25였고 flag형식에 맞춰 입력하니 정답이였다
Noting is essential(Forensics)
문제 설명은 메모한 회의날짜가 flag이니 찾으라는 것이였고, 안에는 ad1이라는 디스크 이미지파일이 하나 들어있었다
이미지 파일이라는걸 안 순간부터 바로 FTK imager로 열고 파일을 하나씩 살펴보는데

제목에 noting이 필수적이라고 적혀있고 OneNote는 딱봐도 너무수상하다 여기에다 메모해놯을것 같다는 확신이들었다

그렇게 cache파일에 들어가 bin파일을 살펴보니 쪼개진 이미지가 나오길래 Watching이랑 똑같은 문제인가? 싶었는데 메모되어있는 모습은 하나도 찾아볼 수 없었다.
그렇게 bin파일은 포기하고 memory 폴더로 넘어갔는데

이녀석 파일시그니처를 보니 SQLite다.
동아리 포렌식 실습때 DB browser를 통해 SQLite를 열었던게 생각나 두 nodes_layoutsdk와 notes.sdk를 추출해 DB browser로 열어보았다.

둘중에 용량이 더 큰 notes.sdk부터 열어보니 notes와 관련된 테이블이있었다.
메모리에서 notes와 관련된 테이블인데 열어보면 기록이 남아있지않을까??

데이터 탐색을 통해 테이블을 열어 데이터를 살펴보니 oneNoteMemory의 스케쥴 약속이라고 적혀있다
이 부분을 전체 드래그해서 메모장에 붙여넣기해보니

미팅 날짜는 2025년 3월14일 17:40분이라는 flag를 찾아낼 수 있었다!
마무리

이렇게해서 총 4문제를 풀었고 3036점을 득점했다
이CTF는 한 카테고리를 풀어야 다음 카테고리가 진행되는 형식이였는데, 리버싱이나 포너블을 공부하지않아서 리버싱, 포너블위주의 카테고리가 나왔을때 시간을 많이 버린것 같아 개인적으로 아쉬움이 많이 남는 대회였다.
블랙박스형태의 웹해킹 문제도 처음이였는데 굉장히 어려워서 한문제밖에 손을 못댄만큼, 다음에는 웹해킹 공부도 더 깊게하고, 더 많은 분야를 공부해서 재도전 해봐야할 것같다.
'review 및 write up' 카테고리의 다른 글
| H7CTF write up 및 후기(feat. RubiyaLab) (0) | 2025.10.21 |
|---|---|
| Fiesta2025 write up (0) | 2025.10.03 |
| SPACE WAR - Earth Write UP 및 후기 (0) | 2025.09.28 |
| CCE2025 예선 write up 및 후기 (1) | 2025.08.20 |
| CTF 운영 및 개발 후기 (3) | 2025.04.10 |