SECCON Quals 2015 - rock_paper_scissors

2021. 6. 11. 18:53문제연습/CTF 실전

반응형

 

본 티스토리 블로그는 PC 환경에 최적화되어 있습니다.

모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.

 

SECCON Quals 2015 - rock_paper_scissors

본 네이버 블로그는 모바일 환경에 최적화되어 있습니다. PC 유저분들은 아래 티스토리 블로그를 이용해 ...

blog.naver.com

 

 

SECCON Quals 2015::

rock_paper_scissors
- apk Reversing -

 

1. 파일정보

특별한 권한이나 악성파일로 보이지 않으며 직접 설치해본 결과 가위바위보 게임을 실행하는 파일입니다.

 

직접 실행해볼 경우 이기면 +1점을, 비기거나 지면 0점을 얻습니다.

 

 

 

2. 디컴파일 분석

분석 환경상 cmd 및 일부 경로 접근에 대한 권한이 제한되어 있어 다른 자바 디컴파일 도구인

jadx를 사용하도록 하겠습니다.

 

 

- 진입점 함수 부분의 디컴파일 코드

빨강 박스 부분의 코드를 보면 플래그 출력 조건을 알아낼 수 있는데,

cnt(이긴 횟수)가 1000과 일치하면 "SECCON{" +String.valueOf((MainActivity.this.cnt +MainActivity.this.calc()) * 107) + "}"로 화면에 flag가 출력됩니다.

 

if (1000 == MainActivity.this.cnt) {
                tv3.setText("SECCON{" +
                String.valueOf((MainActivity.this.cnt +
                MainActivity.this.calc()) * 107) + "}");
            }

 

플래그를 출력하기위해 할 수 있는 방법이 대략 3가지가 존재합니다.

 

1. calc 함수 내부를 확인한 뒤 cnt값과 같이 계산한다음 플래그를 찾아낸다.

2. cnt++를 cnt+=1000으로 바꾼뒤 다시 컴파일 하여 프로그램을 실행, 플래그를 찾는다.

3. 루팅 권한을 이용해 메모리 값을 조작하여 플래그를 출력한다.

 

분석 환경상 제약이 많기에 저는 3번 방식을 이용하도록 하겠습니다.

많이 사용되고있는 메모리 변조도구인 GameGuardiun을 이용해 해당 값을 가지는 메모리 주소를

찾아준 뒤 1000으로 락을 걸고 실행 시키면 플래그가 출력됩니다.

 

Flag : SECCON{107749}

 

반응형

'문제연습 > CTF 실전' 카테고리의 다른 글

CodeGate 2018 - droid.apk  (0) 2021.09.29
CodeGate 2018 - BaskinRobins31  (0) 2021.06.12
Defcamp CTF Quals 2015 - r100  (0) 2021.06.05
CodeGate 2012 - Forensic 100 연습  (0) 2020.03.16