본문 바로가기

Forensic/wargame & ctf

[HackCTF] Secret Document

Flag.zip 을 다운받아서 압축을 풀려고 했는데

 

 

 

암호가 걸려 있다.

 

 

 

flag.txt 뒤에 * 표시는 암호가 걸려있음을 나타냄

 

brute-force attack

무차별 대입 공격. 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미함.

 

암호가 존재하지 않는 건가 ..?

 

일단, HxD로 Flag.zip 을 열어보자.

 

 

 

문제를 다 풀고 보니, 다른 Flags 필드는 모두 00 00 이었다는 것을 알았다.

각 시그니처마다 다른 의미가 있을 듯하다.

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으로 바꿔주면 암호화 문제를 해결할 수 있을 것 같다.

 

 

 

해결!

 

 

 

참고

https://m.blog.naver.com/PostView.nhn?blogId=koromoon&logNo=220612641115&proxyReferer=https:%2F%2Fwww.google.com%2F 

https://omoknooni.tistory.com/7

'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