다운로드 받은 apk파일을 설치하고 보면 다음과 같이 가위바위보 개념의 화면이 나온다.

 

 

이기면 점수가 오르는 형태의 앱인것 같다.

 

디컴파일해서 핵심 로직을 보면 다음과 같다.

 

 

cnt 변수값이 이겼을때 오르는 점수를 의미하고 이 값이 1000일 때 플래그가 나온다. 플래그에 해당하는 값을 보면 (cnt+calc())*107 인데 calc()함수는 calc.so 파일 내부에 정의되어 있는걸 확인할 수 있다.

 

해당 라이브러리 파일 내의 calc()함수를 보면 간단히 7이라는 값을 리턴하고 있는걸 볼 수 있다.

 

 

그럼 결국 플래그값은 (1000+7)*107 값일 것이다.

 

실제로 확인해보기 위해 cnt 최초값을 998로 맞춘다음 2점만 더 획득하면 플래그가 나오게 한 뒤 게임에서 지면 cnt값이 0으로 초기화되는 부분을 아예 삭제시켜버렸다.

 

 

요렇게 세군데 영역을 패치했다.

const v1, 0x3E6 추가

빨간박스 두군데 삭제

 

이제 앱을 재설치하고 실행한뒤 게임에서 2번이기면 플래그가 나온다.

 

 

 

 

 

 

'CTF > Writeup' 카테고리의 다른 글

Google CTF 2017 Food  (0) 2018.02.13
su ctf 2014 (Reverse 200) Commercial Application!  (0) 2018.02.13
nullcon CTF 2018 web2  (0) 2018.02.12
Easy CTF 2018 Nosource, Jr.  (0) 2018.02.11
Codegate 2018 Welcome to droid  (0) 2018.02.09
블로그 이미지

JeonYoungSin

메모 기록용 공간

,