본문 바로가기
분류 전/CTF

[L3ak CTF 2025] BrainCalc 풀이

by jwcs 2025. 7. 15.
728x90
반응형

모바일 문제도 나왔길래 풀어보았다. 현재 시간이 부족하기 때문에 기능 분석은 건너띄고 바로 flag를 찾으러 가보겠다.

 

취약점 분석

apktool d .\app-debug1.apk

위와 같이 디컴파일을 해주자.

 

디컴파일

그럼 위와 같이 폴더가 생성된다.

 

\app-debug1\assets\chaquopy

위 경로로 타고 내려오면 imy 파일들을 확인할 수 있다.

 

압축 프로그램으로 열기

imy 파일은 위와 같이 압축 해제를 수행할 수 있다. 

 

압축 해제

그럼 위와 같이 압축 해제된 파일들을 볼 수 있는데, 컴파일된 pyc 확장자를 가지고 있다.

 

https://jwcs.tistory.com/238

 

파이썬 디컴파일을 위한 pycdc 설치 및 사용법

안드로이드 해킹 문제를 풀다가 컴파일된 python 파일이 있어 이걸 디컴파일하기 위해 이것저것 찾아봤다. 다른 툴들은 3.9 이상은 지원하지 않는다. 따라서 pycdc를 사용하여 문제를 풀었다. 이에

jwcs.tistory.com

pycdc를 사용해서 디컴파일을 해줬다. 위 url에 pycdc 사용법에 대해 정리해뒀으니 참고하자.

 

def get_secret_reward():
Unsupported opcode: PUSH_EXC_INFO (105)
    compressed_flag = 'eJzzMXb0rvYqLS6JN4kPNynKjQ8tiHfOMMnJqQUAeHcJQA=='
    decoded = base64.b64decode(compressed_flag)
    flag = zlib.decompress(decoded).decode('utf-8')
    return flag
# WARNING: Decompyle incomplete

그럼 위와 같은 결과를 찾아볼 수 있다. 필요 없는 부분을 지우고 실행하면 flag를 구할 수 있다.

 

import zlib
import base64

def get_secret_reward():
    compressed_flag = 'eJzzMXb0rvYqLS6JN4kPNynKjQ8tiHfOMMnJqQUAeHcJQA=='
    decoded = base64.b64decode(compressed_flag)
    flag = zlib.decompress(decoded).decode('utf-8')
    return flag

print(get_secret_reward())

flag

L3AK{Just_4_W4rm_Up_Ch4ll}

짜잔

728x90
반응형

'분류 전 > CTF' 카테고리의 다른 글

[DownUnderCTF 2025] mini-me 풀이  (0) 2025.07.22
[L3ak CTF 2025] babyrev 풀이  (1) 2025.07.16
[L3ak CTF 2025] Flag L3ak 풀이  (0) 2025.07.15
[R3CTF 2025] web-evalgelist 풀이  (3) 2025.07.13
[cubectf] Legal Snacks 풀이  (1) 2025.07.08