-
[N0NAMED] 입사테스트[2]2022/Write-Ups 2022. 9. 27. 23:12
6팀 박지혜
Q. N0Named Wargame : 입사테스트[2]
http://ctf.no-named.kr:1234/challenges#%EC%9E%85%EC%82%AC%20%ED%85%8C%EC%8A%A4%ED%8A%B8[2]-3
힌트가 이미지 파일 복구라는 것을 먼저 알고, task.jpg 파일을 다운받았다.
파일을 열자 이 파일의 형식은 지원되지 않는다고 뜬다. HxD 에디터로 이 파일을 열어 파일의 제대로 된 확장자가 무엇인지 알아보도록 한다.
파일의 시그니처를 확인해보니 이 파일은 png 파일이었던 것 같다. 하지만 기존의 png 파일의 시그니처와 완벽하게 맞지 않으므로 시그니처를 수정해주었다.
PNG 헤더 시그니처 : 89 50 4E 47 0D 0A 1A 0A
사진이 열리긴 했지만 어떠한 힌트도 얻을 수 없는 검정색 그림이 되었다. 그렇다면 이 파일이 APNG 파일이 아닌지 의심해봐야 한다.
APNG (Animated Portable Network Graphics)
PNG를 확장한 이미지 파일 포맷으로, GIF 파일과 유사하지만, 기존 PNG 파일과의 하휘 호환성을 유지하기 때문에 GIF보다 더 높은 품질을 보여준다. APNG 파일의 첫 프레임은 일반적인 PNG 스트림으로 저장되기 대문에, APNG가 PNG 파일로 열릴 수 있다.
가지고 있는 파일을 APNG 파일로 변환해야 하기 때문에, TweakPNG 프로그램을 이용하기로 했다.
TweakPNG : 작은 chunk 단위로 이루어진 png 파일을 단위로 분석해주는 툴.
툴을 이용해 사진을 분석하자 다음과 같이 분석 결과가 나왔다.
여기에서 APNG의 구조를 살펴보면,
[PNG 시그니처, IHDR, acTL] 을 시작부분으로 가지고, [fcTL,IDAT] 가 첫번째 프레임으로 와야한다. 또한 IDAT 앞에 fcTL 청크가 존재해야 첫번재 프레임이 되어 애니메이션에 포함된다.
여기에서 이 프레임마다의 fcTL은 청크 시퀀스 번호에 따라 순서를 맞춰주어야 한다.
첫번째 fcTL 청크는 시퀀스 번호 0이 반드시 있어야 하며, 다른 fcTL, fdAT 청크 시퀀스 번호와 중복이 없어야 한다.
그러므로 순서를 바꿔주어야 한다.
사진처럼 Move Up 버튼을 이용하면 순서를 바꿀 수 있다.
기본 정렬이 끝나면 청크 시퀀스 번호를 확인해야 한다. 문제가 없는 걸 확인 후, 파일을 다시 저장한다.
이미지를 다시 확인하니, 검정색이었던 화면에 변화가 생겼다. 하지만 아직 플래그는 나오지 않았는데, 아까 분석할 때 IDAT가 두 개였던 것으로 보아 PNG 파일 두 장이 겹쳐 있는 것 같다. 이 파일들을 분리해야 하므로 APNG disassembler 프로그램을 이용했다.
APNG disassembler : http://apngdis.sourceforge.net/
해당 프로그램은 .png 파일과 apng 파일만을 지원하므로 기존에 있던 파일의 확장자를 png로 변환 후에 Convert 버튼을 눌러주었다.
다음과 같이 사진이 분리된 것을 확인할 수 있다. apngframe2.png를 눌러보면,
플래그 값을 확인할 수 있다.
플래그를 넣으면,
문제가 해결되었다.
'2022 > Write-Ups' 카테고리의 다른 글
[ctf-d] Graphics Interchange Format (0) 2022.09.27 [ctf-d] Wota (0) 2022.09.27 [ctf-d] 모두 비밀번호를 txt파일... (0) 2022.09.27 [ctf-d] black-hole (0) 2022.09.27 [ctf-d] 우리의 제일 귀여운… (0) 2022.09.27