1 분 소요

1. 문제

prob1

prob 1에 가보면 해당 이미지가 있다.
제목은 End Of Image라고 한다.

2. 풀이

일단 파일의 저장명이나 속성에 어떤 정보가 있지 않을까 하고 봤으나 별 거 없었다.
그렇다면 본격적으로 파일을 분석해보자.
hxd라는 헥스 에디터로 파일을 열어보았다.

prob1_hxd

실제 확장자와 같이 png파일인 것을 확인할 수 있다.
하지만 여기서부터 어떻게 해야 할지 막막했다. 아래까지 쭉 내려봐도 알 수 없는 것들만 있었기 때문이다.
혹시 footer 부분에 플래그를 숨겨두거나 하지 않았을까? 하는 생각에 footer 부분을 보려고 아래까지 내려봤지만 알 수 없었다.

하지만 이 footer가 힌트이다.
사진의 제목도 End Of Image인 것을 생각해보면 footer가 단서가 될 수 있다.

png 파일의 footer는 무엇일까?
49 45 4E 44 AE 42 60 82 이러한 형식으로 되어 있고, IEND라는 문자열로 표시된다.
그렇다면 해당 부분을 찾아보자.

png_footer

파일이 다 끝나지도 않은 부분에 footer가 있다.
png의 footer인 49 45 4E 44 AE 42 60 뒤에 이어지는 FF D8 FF E1... 이것들은 무엇일까?
FF D8 FF E1 xx xx 45 78 바로 JPG 파일의 헤더이다.
즉 png 파일 뒤에 JPG 파일이 이어붙여져 있는 것인 듯 하다.
JPG 파일의 footer를 확인해보자. FF D9이다.
그렇다면 이 파일의 끝 부분도 확인해 보자.

jpg_footer

FF D9로 끝나는 것을 확인할 수 있다.
그렇다면 어떻게 해야 할까?
JPG 파일이 시작하는 부분, 즉 FF D8부터 마지막 FF D9까지 부분을 잘라 새 파일로 만들어 줄 것이다.
이것을 카빙 이라고 한다.

carved

해당 부분을 잘라 저장하고, 확장자를 JPG로 바꿔준 모습이다. 어떤 이미지 하나가 보인다.

3. 정답

flag

flag를 얻을 수 있다.

4. 마무리

그동안 파일의 시그니처 부분을 건드리는 문제를 몇 가지 접해봤는데,
헤더에만 집중할 게 아니라 footer 부분도 신경써서 봐야 할 듯 하다.
파일을 이런 식으로도 연결해 둘 수 있다는 것이 신기하기도 하고 역시 여전히 어렵게 느껴진다. 다양한 형태를 많이 봐 둘 필요가 있을 것 같다.

카테고리:

업데이트: