Flag.zip 을 다운받아서 압축을 풀려고 했는데
암호가 걸려 있다.
flag.txt 뒤에 * 표시는 암호가 걸려있음을 나타냄
brute-force attack
무차별 대입 공격. 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미함.
암호가 존재하지 않는 건가 ..?
일단, HxD로 Flag.zip 을 열어보자.
각 시그니처마다 다른 의미가 있을 듯하다.
zip 파일의 구조를 살펴보자.
zip 파일의 일반적인 구조 (크게 3개의 파일 구조로 되어 있음)
1. Local File Header
- 압축 파일에 대한 기본 정보들이 포함됨 ex) 압축 전후 파일 크기, 파일 수정 시간 등
필드
- Signature (4B) : 50 4B 03 04 (리틀 엔디안)
- Version (2B)
- Flags (2B) : 바이트 식별자
...
2. Central Directory
- Local File Header 의 확장된 데이터 뷰를 제공함
- Local File Header 에 포함된 데이터에 더하여 파일 속성, 구조에 대한 로컬 기준을 가짐
필드
- Signature (4B) : 50 4B 01 02 (리틀 엔디안)
- Version (2B)
- Vers.needed (2B)
- Flags (2B) : 바이트 식별자
...
3. End of central directory record
- 모든 아카이브의 싱글 템플릿으로 제공하며 아카이브의 종료를 작성함
- Central Directory 블록의 시작과 로컬 참조의 시작, 아카이브 레코드들의 숫자가 중요한 데이터임.
필드
- Signature (4B) :50 4B 05 06 (리틀 엔디안)
- Disk Number (2B)
...
위 내용을 바탕으로, Flags 필드에 파일의 암호화 여부를 체크해주는 부분이 있음을 알게 되었다.
우선, flag.txt 의 Central Directory 부분을 보자.
이 부분에서 Flags 필드를 보면,
09 08 로 설정되어 있는 것을 알 수 있다.
이를 리틀 엔디안 형식으로 보면 08 09 가 되고, 08 09 를 비트로 나타내면 0000 1000 0000 1001 과 같다.
아까 Flags 필드의 Bit 00 은 암호화된 파일을 나타낸다고 했는데, 0000 1000 0000 1001 에서 Bit 00 에 해당하는 부분이 1로 활성화 되어 있기 때문에, flag.txt 파일이 암호화 된 것이다.
따라서, Flags 필드의 값을 0으로 바꿔주면 암호화 문제를 해결할 수 있을 것 같다.
해결!
참고
'Forensic > wargame & ctf' 카테고리의 다른 글
[HackCTF] 나는 해귀다 (0) | 2022.01.15 |
---|---|
[HackCTF] 잔상 (0) | 2022.01.06 |
[HackCTF] Question? (0) | 2022.01.06 |
[HackCTF] 세상에서 잊혀진 날 찾아줘! (0) | 2022.01.04 |
[HackCTF] So easy? (0) | 2021.11.09 |