CTF/MISC

[Layer7 CTF] zipzipzipzipzip - MISC / Shell script

SecurityMan 2022. 12. 25. 11:00

 

zip 파일과 관련된 MISC 카테고리의 문제

 

MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다.

 

반응형

 

문제 제목이 문제를 가장 잘 설명하고 있다.

 

CTF에서도 종종 보이는 유형이다.

 

 

문제에서 layer1000.zip 파일이 제공된다.

 

해당 파일의 압축을 풀면

 

 

layer999.zip 파일이 나오고

 

또 압축을 풀면

 

 

layer998.zip 파일이 나온다.

 

숫자가 줄어드는걸 보니..

 

layer1.zip 또는 layer0.zip 까지 가야 플래그를 찾을 수 있는듯 하다.

 

사실 이번 문제는 zip 파일에 별로도 암호 같은게 걸려있지 않기 때문에

 

Linux 에서 Shell script 를 사용하면 아주 쉽고 빠르게 풀 수 있다.

 

while true;
	do 
    	unzip $(ls *.zip) -d $(ls *.zip). && cd $(ls *.zip).;
	done

 

Shell script 는 생각보다 아주 간단하다.

 

while 문을 이용해 do ~ done 사이에 있는 스크립트가 계속 반복되도록 해주고,

 

do ~ done 사이에는

 

ls *.zip 명령어로 현재 폴더에 있는 zip 파일의 이름을 찾은 뒤 (ex : layer1000.zip)

 

unzip 으로 압축을 풀어주는데 압축 푸는 경로의 이름을 파일명 + . (온점) 으로 지정해준다. (ex : layer1000.zip.)

 

그런다음 생성한 폴더로 cd 명령어로 이동한 뒤,

 

다시 앞의 작업들을 반복해주게 된다.

 

 

스크립트를 실행시키면 이런식으로 동작한다.

 

layer1000.zip. / layer999.zip. / layer998.zip. ... 

 

이런식으로 계속 압축을 풀어주면서 들어가게 된다.

 

 

스크립트가 계속 실행되다가 명령어에 대한 오류가 발견되면

 

더이상 압축 해제할 zip 파일이 없는 것이기 때문에 

 

Ctrl + C 를 눌러 스크립트를 강제로 종료시키면 된다.

 

 

다행히 layer0.zip 까지 안가고 layer777.zip 에서 금방 멈췄다.

 

사실 출제자도 만들기 귀찮았던게 아닐까

 

layer777.zip 파일의 압축을 풀면 안에 .flag 파일이 있다.

 

 

해당 파일의 내용을 읽어주면

 

플래그를 찾을 수 있다.

반응형