ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [xcz.kr] ZIP
    2022/Write-Ups 2022. 5. 11. 05:02

    5팀 김세연


    패스워드가 필요한데 브루트포싱 문제가 아니라고 했고,

    문제 제목이 ZIP인데 제공된 파일도 zip 파일이어서

    zip 파일을 어떻게 해서 패스워드를 알아내야 하는 것 같다.

    우선 HxD에 넣어보았다.

    zip 파일 구조가 맞는지 확인할 필요가 있다.

     


    ZIP 파일 구조

    local file header, central directory, end of central directory 크게 3부분으로 나눌 수 있다.

    위 화면은 두 파일이 하나의 zip 파일에 있을 때의 구조이다.

    파일 당 Local file header와 central directory는 하나씩 가져야 하고 (파일이 2개면 2개씩 - 각각 하나)

    end of central directory는 하나만 있으면 된다. 

    각각을 살펴보면 다음과 같다.

    - Local File Header

    각 크기 별 필드의 역할이 정해져 있다. 

    값이 의미하는 바가 정해진 필드가 있고, 파일마다 다른 값이 들어갈 수 있다. 

    또한 대부분 크기가 정해져 있지만 file name이나 extra field는 가변 크기이다. 

     

    아래 참고 링크를 걸어놨는데, 그 블로그(한글)에 표로 잘 정리가 되어있다. 

    - Central Directory

    파일 구조에서 맨 처음에만 시그니처가 있는 것이 아니라, central directory에도 시그니처가 존재한다.

    다만 그 값이 좀 다르다. (50 4B 03 04가 아닌 50 4B 01 02)

    local file header에 포함된 데이터를 더하여 파일 속성, 구조에 대한 내용들을 담고 있다.

     

     

    - End of central directory

    zip 파일의 푸터 시그니처를 가지고 있다.

     

     

    zip 파일 구조 참고1(영어)

     

    zip 파일 구조 참고2(한글)


    파일 구조를 살펴본 후 zip 파일을 살펴보았다.

    format_it.zip에는 파일이 두 개 있다.

    그러면 Local file header와 central directory는 두 개씩 존재해야 한다.

    다시 HxD에서 살펴보자.

     

    HxD에서 50 4B 01 02를 검색해보니 하나밖에 없다. 

     

    한 파일의 central directory가 없는 것 같다.

    그리고 위 사진 밑을 보면 flag.rar이 적혀있는 것으로 보아 파일에 존재하는 central directory는 flag.rar의 것이고 이름없는 파일의 central directory가 없는 것을 알 수 있다.

    다행히 central directory는 Local file header와 필드가 비슷하기 때문에 이를 바탕으로 작성해주면 될 것 같다.

     

    이름없는 파일의 local file header

    파일명이 없기 때문에 이 부분이 local file header임을 알 수 있었다.

    필드
    signature 50 4B 03 04
    version 14 00
    flags 00 00 
    compression method 08 00
    file modification time D2 BE
    file modification date 50 43
    crc-32 checksum EC BD 08 97
    compressed size 71 05 00 00
    uncompressed size 76 05 00 00
    file name length 09 00 
    extra field length 08 00
    file name 00 00 00 00 00 00 00 00 00

     

    local file header를 바탕으로 central directory 값을 적어보았다.

    필드
    signature 50 4B 01 02
    version 14 00
    vers.needed 14 00
    flags 00 00 
    compression method 08 00
    file modification time D2 BE
    file modification date 50 43
    crc-32 checksum EC BD 08 97
    compressed size 71 05 00 00
    uncompressed size 76 05 00 00
    file name length 09 00 
    extra field length 08 00
    file comm.len 00 00 
    disk start 00 00
    internal attr. 01 00 (일반 default 값)
    external attr. 20 00 00 00 (일반 default 값)
    offset of local header 00 00 00 00
    file name 00 00 00 00 00 00 00 00 00

     

    HxD에 넣어주고 저장했다.

    근데도 손상된 파일이라고 나온다.

     

    일단,,

    이 파일의 타입을 알아보기 위해 아래 사이트에 넣어보았다.

    https://www.checkfiletype.com/

    png 파일이 들어있다는 것을 알 수 있다.

     

    파일 구조를 볼 때 FTK imager을 사용했던 것이 기억이 나서 그것을 이용해보기로 했다.

    보통 디스크 문제 풀 때 사용하는 것인데, 

    image file을 선택해주고 zip파일을 선택한다.

    그러면 이렇게 이름없는 파일이 png파일이었던 것을 확인할 수 있다. 

     

    저 사진 파일에 적힌 pw로 flag.rar을 열면 flag를 얻을 수 있다.

     


    +) 궁금해서 파일을 수정하기 전의 문제 파일을 ftk imager에 넣어보았다.

    그랬더니 이름 없는 파일은 없이 flag.rar만 나왔다.

     

    반면 수정 후에는 flag.rar은 없이 이름 없는 파일만 나왔는데 왜 그런 것인지는 모르겠다.

     

    그리고 ftk에서는 수정 후 이름 없는 파일의 사진파일이 보이는데, 왜 반디집에서는 손상된 파일이라고 하고 보이지 않는지 모르겠다. (손상된 파일이라면 ftk에서도 보이지 않는 것이 맞는게 아닌가?)