Android/InjuredAndroid

FLAG TWO - EXPORTED ACTIVITY

Analysis

Code

FlagTwoActivity

public class FlagTwoActivity extends c {
    int t = 0;

    public /* synthetic */ void F(View view) {
        int i = this.t;
        if (i == 0) {
            Snackbar X = Snackbar.X(view, "Key words Activity and exported.", 0);
            X.Y("Action", (View.OnClickListener) null);
            X.N();
            this.t++;
        } else if (i == 1) {
            Snackbar X2 = Snackbar.X(view, "Exported Activities can be accessed with adb or Drozer.", 0);
            X2.Y("Action", (View.OnClickListener) null);
            X2.N();
            this.t = 0;
        }
    }

    /* access modifiers changed from: protected */
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView((int) R.layout.activity_flag_two);
        C((Toolbar) findViewById(R.id.toolbar));
        ((FloatingActionButton) findViewById(R.id.fab)).setOnClickListener(new d(this));
    }
}

FlagTwoActivity를 확인해보면 View생성을 위한 onCreate함수나 힌트 관련한 F 이외의 함수를 확인할 수 없다.

하지만 문제 이름이나 힌트를 보고 유추할 수 있듯 액티비티 관련하여 확인을 해야 된다는 것을 알 수 있다.

 

AndroidManifest.xml

활성화되어있는 액티비티를 확인하기 위해서는 xml파일에 android:exported="true"로 설정되어 있는 액티비티를 확인하면 된다. (exported는 기본으로 false이기 때문에 이러한 방식으로 찾는다)

확인해보면 다음과 같이 FlagOneSuccess 이후 exported가 활성화되어 있는 액티비티를 확인할 수 있다.

 

Exploit

액티비티를 활성화 시키기 위해 am 명령어를 사용한다.

am 명령어는 액티비티 시작, 프로세스 강제 종료, 인텐트 브로드캐스트, 기기 화면 속성 수정 등 다양한 작업을 진행할 수 있는 명령어이다.

  • am start -n b3nac.injuredandroid/b3nac.injuredandroid.b25lActivity

 

명령어를 실행하면 다음과 같이 화면이 전환되어 플래그를 출력하는 것을 확인할 수 있다.

 

Reference

'Android > InjuredAndroid' 카테고리의 다른 글

FLAG FOUR - Login 2  (0) 2021.09.21
FLAG THREE - RESOURCES  (0) 2021.09.21
FLAG ONE - Login  (0) 2021.09.21
XSSTEST  (0) 2021.09.13
무결성 검증 - smali 변조  (0) 2021.09.13