CTF/리버싱

[Aero CTF] Eldery File - 리버싱 / 파이썬

SecurityMan 2022. 3. 2. 21:38

바이너리 파일 encoder와 암호화된 파일인 file.enc 가 주어진다.
encoder <filename> 으로 실행시키면 암호화된 enc 파일이 튀어나오는 방식이다.
 
python으로 만들어진 파일이라 의심이 된다면 pyinstaller를 써보면 된다
 
pip install pyinstaller 으로 pyinstaller를 설치할 수 있다.
 
pyi-archive_viewer encoder 를 입력해서 바이너리 파일을 보면
python2.7 버전으로 작성된 것으로 보인다.
 
 
여기서 pyc 파일까지 추출할수 있다
 
 
pyc 파일을 디컴파일해주는 uncompyle6를 써본다
unknown magic number라고 나오는게 파일시그니처가 손상된듯하다.
 

 

https://file-extension.net/seeker/seeker.py?ext=pyc 에서 각종 파일시그니처들을 볼 수 있다.

 

아까 맨처음에 pyi-archive_viewer 사용시 python2.7이라는 글자가 보였음으로
2.7버전 파일시그니처인 03 F3 0D 0A를 HxD를 이용해 앞쪽에 추가해본다.

 

 
뒤에 00 00 00 00 는??
pyc의 경우 파일 구조상 뒤에 타임스탬프 4바이트가 붙는다고 한다. 대충 00으로 칸만 맞춰준다.
 
 
정상적으로 디컴파일 된다.
 
import lzss
lzss.decode_file("./file.enc","./file_out.enc")

 

코드를 참고하여

decoder.py를 작성한다
 
 
decoder.py를 실행시키면 정상적으로 file_out.enc 가 생성된다.
 
 
hxd로 까보면 0이 엄청 많이나온다.
이렇게 생긴 파일은 인텔 헥스파일이라 그렇다고 한다.
이런건 010에디터로 까면 제대로 보인다고 한다.

 

 
뜨든

바로 플래그가 보인다.

반응형