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 am commnad
https://developer.android.com/studio/command-line/adb?hl=ko#am
'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 |