[ctf-d] 누군가 부정행위를 했다는...
1팀 김나연
zip 파일을 열어보자.
압축해제를 하려고 하니까 용량이 부족하고
압축 알고리즘이 이상하다는 문구가 나왔다.
복구를 클릭하니 아래 파일들이 나온다.
다 확장자가 없는 파일들이다.
모든 게 망가졌다고 했으니 혹시 수정할 게 있는지 hxd로 열어봤다.
50 4B 03 04
ZIP 파일의 헤더 시그니처가 맞다.
50 4B 05 06
Zip 파일의 푸터 시그니처다.
압축파일을 풀 수도 없고...
hxd로 ZIP파일 구조를 분석해야 하나 싶었다
ZIP파일 구조를 분석해보자
ZIP 파일 구조
End of Central Directory 정보 | |
Singature | "0x06054B50" |
Disk Number | 0 |
Disk # w/cd | 0 |
Disk entries | 13(0D) |
Total entries | 13(0D) |
Central directory size | 1040(04 10) |
Offset of cd wrt to starting disk | 5618(15 F2) |
Comment len | 0 |
ZIP file Comment | NULL |
CD Offset의 시작은 15 F2이다.
이 부분으로 가보자.
Central Directory File header의
Signature값인 0x504B0102가 있다.
여기서부터 Central Directory File header의 시작임을 알 수 있다.
Central Directory File header offset 위치별로 나누어보았다.
Central Directory File header 정보 | |
Singature | "0x02014B50" |
Version | 0C 2D |
Vers.needed | 00 9A |
Flags | 0 |
Compression | 00 A9 |
Mod time | 30 22 |
Mod date | 01 41 |
Crc-32 | 66 6C 61 67 |
Compressed size | FF FF FF FF |
Central Directory File header 정보 | |
Uncompressed size | FF FF FF FF |
File name len | 00 0E |
Extra field len | 00 14 |
File comm.len | 0 |
Disk #start | 0 |
Internal attr. | 0 |
External attr. | 01 80 |
Offset of local header | 0 |
File name (variable) |
Central Directory File header 정보 | |
Extra field(variable) | |
File comment(variable) |
offset of local heade까지는 고정적인 데이터
그런데 signature값 뒤부터 version 정보들을 hex값으로 찾아봤을 때 일치하는
version, vers.needed, flag값...등을 찾을 수 없었다.
더군다나 compressed size, uncompressed size가 다 FF이며
아래 Central Directory File header도 compressed size, uncompressed size가 다 FF다.
그러던 중 galf가 뭐지...하다가 뒤집어 읽으니 flag였다.
CRC부분에 해당하는 문자값을 나열하면 flag일까 싶어 나열해보았다.
flag{th3_vi11i4n_w3_n33d_#freeleffen}
vili4n인줄 알았는데 vi11i4n이었다