문제를 보니 파일에서 플래그를 찾으라고 한다. 힌트는 파일의 헤더를 고쳐야한다고 한다.
일단 Hxd로 열어보자.
Header Signature를 보니 뭔지 잘 모르겠다.
file signature 모음은 (forensic-proof.com/archives/300) 여기서 확인해보자.
Footer Signature를 확인 해보자.
footer를 보니 png 파일의 footer signature 였다.
헤더를 수정하고 확장자를 바꾼 뒤에 실행해보자.
아직 실행되지 않는다.
자세히보니 png 파일 헤더 청크에 문제가 있어 보인다.
png 파일 구조에 대해 알아보자.
File Signature (8 byte)
{
Length (4 byte),
Chunk Type (4 byte),
Chunk Data (length byte),
CRC (4byte)
}
이런 구조로 이루어져 있다.
하지만 pngcheck라는 좋은 툴이 존재한다.
우분투에서 한번 사용해보자.
파일 헤더는 고쳐주자.
이제 pngcheck를 써서 차례대로 고쳐보자.
정상적인 IHDR Chunk로 바꿔주자.
그리고 한번 더 pngcheck를 해보자.
빨간 박스 부분도 맞게 고쳐주자.
한번더 pngcheck를 써보자.
Chunk의 길이가 본 길이보다 길다고 한다. 줄여주자!
빨간 부분을 0으로 만들어 4byte를 줄여주자.
한번더 pngcheck를 써보자.
?DET는 IDAT Chunk인 듯 하다. 바꿔주자.
한번더 pngcheck를 써보자.
거의 다 된것 같다.
파일의 확장자를 png로 바꾸고 실행해보자.
플래그가 나왔다.
플래그는 picoCTF{c0rrupt10n_1847995} 이다.
'PicoCTF > WriteUp' 카테고리의 다른 글
[vault-door-3] - 200p (0) | 2020.12.01 |
---|---|
[picobrowser] - 200p (0) | 2020.12.01 |
[plumbing] - 200p (0) | 2020.12.01 |
[Based] - 200p (0) | 2020.12.01 |
[So Meta] - 150p (0) | 2020.12.01 |