본문 바로가기

CTF writeup

[2019 Codegate OPEN CTF] Find flag

https://github.com/sp1end0r/2019_openctf/tree/master/reversing/find_flag

 

GitHub - sp1end0r/2019_openctf: 2019 Codegate EVENT : OPEN CTF

2019 Codegate EVENT : OPEN CTF. Contribute to sp1end0r/2019_openctf development by creating an account on GitHub.

github.com


문제에 설명이 없어서 일단 파일을 다운받고 실행시켜보았는데 실행이 안된다.

 

exeinfo로 먼저 확인해보았다.

가려져서 뒤까지 잘 안보이는데, 가져오면

 

[ PyInstaller v.3.6  - 2005?019 - support Python 2.7, 3.5?.7 www.pyinstaller.org ] - stub :  x64 Microsoft Visual C++ v14 - 2015 - microsoft.com (exe 4883ec 28-48) ,

Overlay :  - .zlib Package

 

라고 되어있다.

pyinstaller라고 되어 있어서 다른 방법을 사용해야 하는 것 같은데

일단 정확하지 않으니 x64 디버거로 동작부터 확인해보았다.

 

실행화면은 위와 같고, 초이스를 입력하라고 해서 a를 입력해봤더니 빛의 속도로 강제 종료 해벌,, 인,, 다,,,

 

그래서 출력되는 부분에 bp를 걸고 다시 해보았더니

이렇게 에러가 뜬다.

 

음,,, 모르겠어서 일단 pyinstaller를 검색해보았다.

찾아보니 pyinstaller로 만든 exe 파일에서 파이썬 코드를 추출하는 방법이 쓰인다고 한다! 

 

방법은 간단했다!

 

1. pyinstxtrctor.py 파일을 다운로드하고 추출하기 원하는 파일(해당 문제에서는 find_flag.exe 파일)과 한 폴더 안에 넣어준다.

2. cmd 창을 열어서 추출해준다.

   명령어는 python pyinstxtractor.py find_flag.exe

 

이렇게 해주면 해당 폴더 안에 추출 폴더가 하나 생긴다.

이렇게~

들어가 보면 

이렇게 된다.

(참고로 왼쪽 아래에서 네 번째 reversing.pyc파일은 후에 생성할 파일이다..!)

 

이제 위의 파일들에서 필요한 파일들을 찾아내야 하는데

다른 파일들과 다르게 용량이 적고 확장자가 없는 파일을 보통 찾는다고 한다.

reversing과 struct라는 파일이 있는데, 나는 reversing을 선택했다.

 

HxD로 확인해보자~

아까 x64로 보았을 때 출력되던 문자열들이 있는 것을 볼 수 있다.

 

그흐럼.

이제 파이썬 코드로 바꿔주는 작업을 하기 위해 pyc 파일로 변환을 해주어야 하는데

 

pyinstaller로 .py 파일을 .exe 파일로 변환시키면 pyinstaller에서 매직 넘버를 자동으로 지운다고 한다.

 

그럼 매직 넘버를 찾아야 하는데 방법이 두 가지가 있다고 한다.

 

1. 해당 소스 파일 버전 확인해서 매직넘버 알아내기

2. 원래 존재했던 zip 파일을 압축해제 후 안에 있는 pyc 파일에서 확인하기

 

생각해보니까 아까 압축 해제했던 파일에 수많은 pyc 파일이 있었다.

 

아무 파일이나 열었더니 아래처럼 매직넘버를 찾을 수 있었다!

왜냐하면 위의 reversing 파일을 보면 63 00~~으로 시작하니까, 아래에서 63 전까지가 매직 넘버라고 할 수 있다.

 

그럼 이제 위의 부분을 복사해서 reversing 파일에 넣어주고 .pyc파일로 새로 저장해주었다.

 

거의 다 했다,,!

 

이제 디컴파일러를 설치해서 python 코드를 확인해주면 된다.

엄?!?!!?? 뭐야!!!

 

해서 찾아보니 uncompyle6로 하라고 한다 

다시다시!!

 

 

아무 반응도 없이 명령어가 수행되었는데, 보면 파일이 조용히 만들어져 있다!

 

 

재미있었던 문제였다!

'CTF writeup' 카테고리의 다른 글

[2022 MHSCTF] Writeup  (0) 2022.08.15
[2019 Codegate OPEN CTF] magic  (0) 2022.08.15
[2019 Codegate OPEN CTF] i_love_cookie  (0) 2022.08.15
[2019 Codegate OPEN CTF] proxy  (0) 2022.08.15
[2019 Codegate OPEN CTF] easy_web  (0) 2022.08.15