ssoL2 TISTORY

[CTF-D/Disk] 누군가 부정행위를 했다는… 본문

challenge/forensic

[CTF-D/Disk] 누군가 부정행위를 했다는…

ssoL2 2021. 5. 22. 08:58

문제 : ZIP 파일이 망가졌는데 무슨일인지 알아봐줘!

 

 

일단 ZIP 파일을 압축해제 시도해보니 "압축 풀기가 불가능한 압축방식"이라고 나와있다.

따라서, ZIP 파일 구조에 문제가 발생함을 예측할 수 있다.

 

 

Hex Editor인 HxD로 구조를  파악해본 결과, 총 13개의 Central Directory records가 존재하였다.

[50 4b 03 04]는 13개, [50 4b 01 02]도 13개, [50 4b 05 06]는 1개로 개수는 정상이었다.

 

 

뭐가 잘못되었는지 zip 파일의 읽는 순서로 따라가보았다.

먼저, End of Central Directory [50 4b 05 06]에서 Central Directory records 시작 offset을 찾아 올라갔다.

 

 

0x000015F2는 첫 번째 Central Directory records [50 4B 01 02] 부분이다.

그런데, 50 4b 01 02 다음에 [2D 0C 9A ...] 등 값이 굉장히 이상하다.

Central Directory records 구조에 따르면 압축 Version, 압축해제 Version 등의 의미를 지니는

Hex 값이 와야하는데, 굉장히 수상한 수가 등장한다. 

 

 

Hex값이 이상하다는 강력한 증거는 해당 Cnetral Directory와

짝에 맞는 Local Header에서의 압축 Version이 다르다는 것뿐만 아니라

이후의 겹치는 정보들이 다르다. (원래는 같아야 한다.)

 

 

따라서, Cerntal Directory records [50 4b 01 02]에 뭔가 이상함을 느꼈고, 

그러던 와중 ascii text에서 "galf"를 발견하였다. 이는 "flag"를 반대로 적어놓은 문자열이다.

 

 

따라서 모든 Central Directory records를 살펴본 결과 4 byte의 문자열만 가져오다 보면 flag를 확인할 수 있다.

2
3
4
5
6
7
8
9
10

 

 

 

위 4byte 문자열을 거꾸로 뒤집어서 합치면 flag를 구할 수 있다.

 

 

🚫 flag는 🚫

더보기

flag{th3_vi11i4n_w3_n33d_#freeleffen}

Comments