[AmateuresCTF 2023] Zipper
문제 파일은 flag.zip 파일이 1개 주어진다.
먼저 exiftool로 파일을 확인해 보았다.
comment를 보면 flag의 part 1과 Part 3를 찾을 수 있다!
< flag - part 1 >
amateursCTF{z1PP3d_
< flag - part 3>
laY3r_0f
zipinfo로 zip 파일을 확인해 보았다.
"flag/" 디렉토리와 "flag/flag201.txt" 파일이 각각 2개씩 존재했다.
2개의 flag/ 디렉토리의 bytes를 보면, 1개는 0바이트, 1개는 17바이트가 존재한다.
그렇다면 1개의 디렉토리에 flag가 있지 않을까?
그렇다면 flag/flag201.txt도 2개 존재하므로 둘 중 1개의 파일에 flag가 존재할 것 같다!
unzip 명령어로 -n 옵션을 주어 압축을 해제했다.
-n 명령어는 같은 이름의 파일이 존재할 시 덮어쓰지 않는 옵션이다.
같은 이름이었던 flag/flag201.txt 파일을 strings 명령어로 확인해 보았다.
flag의 Part 4를 찾을 수 있었다!!!
< flag - part 4 >
_Zips}
unzip으로 -n 명령어를 주고 압축 해제를 했을 때,
디렉토리는 덮어쓰기로 압축 해제가 되었다...
모든 파일의 이름을 순차적으로 적용하는 코드를 작성해서 압축을 해제해야 할 것 같다!
import zipfile
z = zipfile.ZipFile('flag.zip')
for i, f in enumerate(z.filelist):
f.filename = 'flag{0:03}.txt'.format(i)
z.extract(f)
새로운 디렉토리 unzip_flag를 만들어주고
그 안에서 위 코드를 실행했더니
위와 같이 순차적으로 이름이 부여된 파일이 생성되었다.
strings 명령어로 grep을 이용해 Part 2의 flag를 찾아준다!
< flag - part 2 >
in5id3_4_
FLAG
amateursCTF{z1PP3d_in5id3_4_laY3r_0f_Zips}