CTF/FORENSIC

HackCTF Magic PNG

전에 프로젝트 진행하면서 PNG 구조 알아본 적이 있는데 덕분에 쉽게 풀었던 문제이다.

Writeup


File information

문제 파일을 다운 받고 압축을 해제하면 다음과 같이 png파일이 하나 있다.

 

이 파일은 깨져서 열어도 아무것도 볼 수 없는 파일이다.


Solve

이 문제는 PNG format을 조금 알아보면 쉽게 풀 수 있는 문제이다.

PNG의 시그니쳐 89 50 4E 47 0D 0A 1A 0A

PNG에는 크게 세 청크가있다.

  • IHDR (49 48 44 52)
    • iHDR은 말 그대로 헤더 즉 PNG의 여러 메타 데이터가 저장된다.
  • IDAT (49 44 41 54)
    • 실제로 이미지에 대한 데이터가 저장된다.
  • IEND (49 45 4E 44)
    • 파일의 끝을 알려주는 청크

먼저 HxD or 010 editor를 사용해서 PNG의 시그너쳐를 확인해 보면

 

PNG시그니쳐와 조금 다른 것을 확인할 수 있다.

문제 파일 (89 50 4E 47 2E 0A 2E 0A) , 시그니쳐 (89 50 4E 47 0D 0A 1A 0A) 이를 수정하고 저장하면

다음과 같이 이미지가 열리지만 어떠한 문제로 잘린 이미지를 확인할 수 있다.

 

문제를 해결하기 위해 실질적으로 이미지 데이터가 저장되어있는 IDAT를 확인해보면

다음과 같이 정상적인 IDAT(49 44 41 54)를 확인할 수 있지만

 

66 64 61 74로 소문자로 idat로 저장되어 있는 부분을 찾을 수 있다.

아마도 이 부분 때문에 정상적으로 데이터를 확인하지 못하여 사진이 잘려진 모습으로 보인 것 같다.

 

이를 정상적인 값으로 바꿔주면 다음과 같이 플래그를 획득할 수 있다.

 

'CTF > FORENSIC' 카테고리의 다른 글

ctf-d 플래그를 얻어라!  (0) 2020.01.22