KGB messenger CTF challenge | Alerts (Medium)

133210·2021년 8월 30일
0

안드로이드 CTF

목록 보기
2/3
post-thumbnail
  • 어플 실행 시 러시아 기기에서만 실행 가능하다는 알림창이 뜸

  • dex2jar 사용하여 dex 파일 jar 파일로 변환
  • androidmanifest에서 확인한 바 mainactivity가 제일 먼저 실행된다는 것을 알 수 있음
  • onCreat 함수 확인

  • user.home이 Russia거나 소스코드 수정이 필요함
  • smail 코드를 수정하여 우회

  • 조건문 모두 삭제 (10~82)
  • 기존 smali 코드
.method protected onCreate(Landroid/os/Bundle;)V
    .locals 3

    invoke-super {p0, p1}, Landroid/support/v7/app/c;->onCreate(Landroid/os/Bundle;)V

    const v0, 0x7f09001c

    invoke-virtual {p0, v0}, Lcom/tlamb96/kgbmessenger/MainActivity;->setContentView(I)V

    const-string v0, "user.home"

    invoke-static {v0}, Ljava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string v1, "USER"

    invoke-static {v1}, Ljava/lang/System;->getenv(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v1

    if-eqz v0, :cond_0

    invoke-virtual {v0}, Ljava/lang/String;->isEmpty()Z

    move-result v2

    if-nez v2, :cond_0

    const-string v2, "Russia"

    invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_1

    :cond_0
    const-string v0, "Integrity Error"

    const-string v1, "This app can only run on Russian devices."

    invoke-direct {p0, v0, v1}, Lcom/tlamb96/kgbmessenger/MainActivity;->a(Ljava/lang/String;Ljava/lang/String;)V

    :goto_0
    return-void

    :cond_1
    if-eqz v1, :cond_2

    invoke-virtual {v1}, Ljava/lang/String;->isEmpty()Z

    move-result v0

    if-nez v0, :cond_2

    invoke-virtual {p0}, Lcom/tlamb96/kgbmessenger/MainActivity;->getResources()Landroid/content/res/Resources;

    move-result-object v0

    const/high16 v2, 0x7f0d0000

    invoke-virtual {v0, v2}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_3

    :cond_2
    const-string v0, "Integrity Error"

    const-string v1, "Must be on the user whitelist."

    invoke-direct {p0, v0, v1}, Lcom/tlamb96/kgbmessenger/MainActivity;->a(Ljava/lang/String;Ljava/lang/String;)V

    goto :goto_0

    :cond_3
    invoke-static {p0}, La/a/a/a/a;->a(Landroid/content/Context;)V

    new-instance v0, Landroid/content/Intent;

    const-class v1, Lcom/tlamb96/kgbmessenger/LoginActivity;

    invoke-direct {v0, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

    invoke-virtual {p0, v0}, Lcom/tlamb96/kgbmessenger/MainActivity;->startActivity(Landroid/content/Intent;)V

    goto :goto_0
.end method
  • apk 파일 rebuild
apktool b kgb-messenger -o kgb-re.apk

  • SignApk로 서명

GitHub - appium-boneyard/sign: Sign.jar automatically signs an apk with the Android test certificate.

Unable to access jarfile SignApk

  • 현재 깃헙에 signapk.jar 파일이 없어서 따로 다운로드 받아야함.

java -jar signapk.jar testkey.x509.pem testkey.pk8 kgb-re.apk kgb-re-sign.apk

  • 이제 경고창 뜨지 않고 진행 가능

  • 로그인

  • string.xml 파일에서 username와 password 확인 가능
  • 그러나 해당 아이디와 패스워드로 로그인 시 Incorrect password 출력

  • 아이디인 codenameduchess password 검색 시 해당 PDF 파일 확인 가능

  • Password가 guest임을 확인 가능

  • 성공 시 플래그가 뜸
  • 로그인 성공 화면

  • 플래그 FLAG{G00G13_PR0}

0개의 댓글