압축파일 안에는 플래그 파일과 2개의 힌트 파일이 있다
플래그 파일은 암호화되어있어서 직접 확인 할 수는 없다
힌트파일은 접근이 되어서 확인 해봤는데 2가지 모두 확인하고 고려해본 결과 암호는 걸려있지 않다는 결론이 나왔다
ZIP파일의 구조를 살펴본 결과 크게 3개의 구역으로 나뉘어져 있는데,
(Local File Header, Central Directory, End of central directory record)
이 중 Flag 영역에 파일의 암호화 여부를 체크해주는 부분이 있음 을 알게 되었다
문제 파일의 flag.txt의 Central Directory 부분에서 flag 필드를 확인 해 보면 09 08로 되어있다
이를 리틀 엔디언 형식으로 보면 08 09가 되는데
0809를 비트로 계산하면 0000 1000 0000 1001과 같은데, 이 16비트에 각각 해당 파일에 대한 정보가 담겨있다
Flag 필드 |
Bit 00 : 암호화된 파일 Bit 01 ~ 02 : 압축 옵션 Bit 03 : 데이터 기술자 Bit 04 : 강화된 디플레이션 Bit 05 : 압축된 패치 데이터 Bit 06 : 강력한 암호화 Bit 07 ~10 : 사용하지 않음 Bit 11 : 언어 인코딩 Bit 12 : 예약됨 Bit 13 : 헤더값 마스크 Bit 14 ~ 15 |
0000 1000 0000 1001에서 Bit 00에 해당 하는 부분은 1로 되어있는데, 이는 암호화가 되어있다는 의미이다
따라서, Bit 00의 값을 0으로 바꿔주면 파일은 암호화되어있지 않은 것으로 처리된다
flag 파일을 열 수 있으며, 플래그를 획득