이번 문제는 SuNiNaTas의 28번 문제를 그대로 가져온 듯 하다.
문제를 풀어보자.
제공해준 zip 파일을 다운받아 열면 flag.txt 파일이 존재하는데 해당 파일을 읽으려하면 암호를 입력하라고 한다.
그래서 fcrackzip을 이용하여 해당 zip 파일의 암호를 해독해보려 했는데 flag.txt가 암호화가 되어있지 않다고 뜬다.
그래서 ZIP 파일의 파일헤더에 대해 찾아보았다.
- 참고 : https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html
파일 헤더를 보면 0x8 0x9 부분에 Flags 헤더가 존재함을 볼 수 있다.
이 헤더가 의미하는 바는 아래와 같다.
Flags General purpose bit flag:
Bit 00: encrypted file
Bit 01: compression option
Bit 02: compression option
Bit 03: data descriptor
Bit 04: enhanced deflation
Bit 05: compressed patched data
Bit 06: strong encryption
Bit 07-10: unused
Bit 11: language encoding
Bit 12: reserved
Bit 13: mask header values
Bit 14-15: reserved
그렇다면 문제에서 제공한 zip 파일에서 flag.txt는 어떤 형식으로 되어있는지 보자.
flag.txt의 0x8 0x9에는 각각 09 08이 들어있음을 볼 수 있다.
이는 00001001 00001000으로 리틀엔디안 형식으로 보면 Bit 00에 해당하는 값이 1로 세팅되어 있음을 볼 수 있다.
이를 0으로 세팅해주기 위해 08 08로 변경해준 뒤 저장해준다.
그리고 난 뒤 다시 해당 zip 파일을 열어보면 flag.txt의 잠금이 풀려 Flag를 얻을 수 있다.
'Solve Problem > HackCTF' 카테고리의 다른 글
[HackCTF] LOL (2) | 2019.11.20 |
---|---|
[HackCTF] No Password (0) | 2018.12.30 |
[HackCTF] 가위바위보 (0) | 2018.12.28 |
[HackCTF] Secure Login (0) | 2018.12.02 |