Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- Frida
- NOX
- 보안제품개발
- 비트코인
- Burp Suite CA
- UTXO
- apk easy tool
- BOB10기
- 자산추적
- injuredandroid.apk
- FlagTwoActivity
- BOB 합격후기
- smali
- SlubBackdoor #응용 #악성코드 #악성코드_제작 #Python #깃허브를_이용한_악성코드
- 앱변조
- golang
- jadx
- blockchain
- BOB10기합격후기
- 안드로이드 앱 진단 환경설정
- Burp Suite
- BOB면접
- XSS
- 블록체인
- injuredandroid
- AndroGoat
- 솔루션개발
- FlagOneLoginActivity
- BOB후기
- bitcoin
Archives
- Today
- Total
Kye0m's Security
[injuredandroid.apk] Flag Six - Login3 본문
Login 1,2 문제와 마찬가지로 특정 플래그 값을 입력하여 푸는 문제이다.

문제풀이
public final void submitFlag(View view) {
EditText editText = (EditText) findViewById(i.editText3);
d.m.b.d.b(editText, "editText3");
if (d.m.b.d.a(editText.getText().toString(), k.a("k3FElEG9lnoWbOateGhj5pX6QsXRNJKh///8Jxi8KXW7iDpk2xRxhQ=="))) {
Intent intent = new Intent(this, FlagOneSuccess.class);
FlagsOverview.D = true;
new j().b(this, "flagSixButtonColor", true);
startActivity(intent);
}
}
FlagSixLoginActivity중 submitFlag 부분만 가져왔다.
if문을 통해, 입력받은 값과 k클래스의 a(k3FElEG9lnoWbOateGhj5pX6QsXRNJKh///8Jxi8KXW7iDpk2xRxhQ==)
값과 비교한다는 것을 알 수 있다.
public static String a(String str) {
if (c(str)) {
try {
SecretKey generateSecret = SecretKeyFactory.getInstance("DES").generateSecret(new DESKeySpec(f1917a));
byte[] decode = Base64.decode(str, 0);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(2, generateSecret);
return new String(cipher.doFinal(decode));
} catch (InvalidKeyException | NoSuchAlgorithmException | InvalidKeySpecException | BadPaddingException | IllegalBlockSizeException | NoSuchPaddingException e) {
e.printStackTrace();
}
} else {
System.out.println("Not a string!");
}
return str;
}
이를 따라가보면 입력받은 값을 Base64로 디코딩하여, DES를 통한 암호화를 진행하는 것을 알 수 있다.
이번엔 Frida를 이용해서 애플리케이션 내부에 자바스크립트 코드를 삽입하여 복호화를 진행해볼 예정이다.

우선 adb shell 을 통해서 nox에서 프리다 서버를 실행시켜준다.
frida -U b3nac.injuredandroid -l 실행시킬 자바스크립트파일
자바 스크립트 파일은 아래와 같이 작성해준다.
console.log("Script loaded successfully");
Java.perform(function x() {
var my_class = Java.use("b3nac.injuredandroid.k");
var string_class = Java.use("java.lang.String");
my_class.a.overload("java.lang.String").implementation = function (args) {
var my_string = string_class.$new("k3FElEG9lnoWbOateGhj5pX6QsXRNJKh///8Jxi8KXW7iDpk2xRxhQ==");
var ret = this.a(my_string);
console.log("Return value: " + ret);
return ret;
};
});
이렇게하면 항상 고정된 값을 복호화 하여 전달하기 때문에 어떠한 값을 입력하더라도 원하는 플래그값을 리턴으로 받을 수 있다.

'앱 모의해킹 > Injuredandroid.apk' 카테고리의 다른 글
| [injuredandroid.apk] Flag Seven - SQLITE (0) | 2022.09.12 |
|---|---|
| [injuredandroid.apk] Flag Four - Login2 (0) | 2022.09.12 |
| [injuredandroid.apk] FlagThree - Resources (0) | 2022.09.12 |
| [injuredandroid.apk] FlagTwo - Exported Activity (0) | 2022.09.12 |
| [injuredandroid.apk] FlagOne - Login (0) | 2022.09.12 |