전에 프로젝트 진행하면서 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 |
---|