CTF/Dreamhack

Dreamhack - Basic_Forensics_1

Noctis41 2025. 1. 24. 16:09

해당 문제는 Dreamhack의 Basic_Forensics_1 문제에 대한 풀이입니다.


해당 문제에 대한 설명 이미지 파일안에 Hidden 메세지가 숨어있다. 이 말을 보고 바로 스테가노그래피 문제라고 생각했다.

문제 파일을 다운받으니 png 파일이였다.

문제 설명에서 이미지 파일에 Hidden 메시지가 숨어 있다는 힌트를 얻었다. 이 말은 스테가노그래피(steganography)와 관련된 문제임을 의미한다.

문제 파일을 다운로드한 결과, 파일 형식은 PNG였다.

파일 확인

확실히 PNG 파일인지 확인하고, 단순히 hidden 값을 파일 안에 넣었는지 검증하기 위해 HxD를 사용해 파일을 열었다.

위 사진을 통해 PNG 파일의 헤더 시그니처와 푸터값에 변조가 없음을 확인했다.

또한, 문제에서 flag 값이 'DH'로 시작한다고 명시되어 있어 해당 문자열을 검색해 보았지만 flag로 추정되는 값은 발견되지 않았다.


 

문제를 더 보기전에 PNG 파일에 대해 조금 더 설명하겠다.

png란? 
PNG(Portable Network Graphics)는 디지털 이미지 저장 및 전송을 위한 파일 형식으로, 손실 없는 압축 방식을 사용하여 고품질 이미지를 제공한다. JPEG과 GIF의 대안으로 널리 사용되며, 특히 투명도를 지원하고 이미지 품질을 유지해야 하는 상황에서 유용하다.

PNG 파일의 기본 구조

PNG 파일은 엄격히 정의된 구조를 따르며, 주요 부분은 다음과 같다:

파일 시그니처 (File Signature)

  • PNG 파일은 항상 고유한 8바이트의 시그니처로 시작한다.
시그니처 값: 89 50 4E 47 0D 0A 1A 0A
  • 89: 바이너리 파일임을 나타냄.
  • 50 4E 47: 'PNG'의 ASCII 코드.
  • 나머지 값: 파일 무결성과 플랫폼 독립성을 보장.

 

PNG 청크 (Chunks)

  • PNG 파일의 데이터는 여러 개의 청크로 나뉘어 저장된다.
  • 각 청크는 이미지 데이터, 색상 정보, 메타데이터 등을 담고 있다.

청크 구조: 

필드 이름 크기 설명
길이 4바이트 데이터의 길이
유형 4바이트 청크의 종류를 정의하는 코드
데이터 가변적 청크의 실제 데이터
CRC 4바이트 오류 검출을 위한 체크섬
  • 필수 청크:
    1. IHDR (헤더 청크): 이미지 주요 속성을 정의.
    2. PLTE (팔레트 청크): 색상 데이터를 저장 (팔레트 기반 PNG에서만).
    3. IDAT (이미지 데이터 청크): 압축된 이미지 데이터.
    4. IEND (종료 청크): PNG 파일의 끝을 나타냄.

 


문제로 돌아와서 스테가노그래피 문제인 것은 확실하지만, 추가 도구를 사용해야 함을 느꼈다.

 

관련 도구는 다양하지만, 간단하게 온라인에서 스테가노그래피를 처리할 수 있는 도구 https://stylesuxx.github.io/steganography/를 사용했다

 

실행 방법

  1. 해당 이미지 파일을 도구에 업로드.
  2. Decode 기능 실행.
  3. 결과적으로 아래와 같은 flag를 확인했다: