문제
풀이
FlagSixLoginActivity 파일을 확인
67번째 줄을 보니 k.a"k3FElEG9lnoWbOateGhj5pX6QsXRNJKh///8Jxi8KXW7iDpk2xRxhQ==" 와 비교하여 동일해야 함
k클래스의 a 함수를 확인
이를 해결하기 위해 frida를 사용할 것이다.
Frida는 고유한 코드를 삽입하고 실행중인 프로세스를 프로그래밍 방식으로 대화식으로 검사하고 변경
우선 js 파일을 작성
(아래 링크를 통해 python 코드도 볼 수 있음)
console.log("Script loaded successfully");
#현재 스레드가 가상머신에 연결되어 있는지 확인하고 fn을 호출
Java.perform(function x() {
var my_class = Java.use("b3nac.injuredandroid.k"); #앱에서 사용하는 클래스와 연동되는 my_class 정의
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("res: " + ret);
return ret;
}
})
복호화 루틴이 존재하는 "b3nac.injuredandroid.k"를 선언
복호화 루틴 함수를 오버로딩
암호화 문자열을 string_class를 사용하여 my_string에 저장
복호화 함수에 암호화된 문자열을 넘겨 복호화된 문자열을 받음
nox에서 friad server 실행
cmd에서 frida 실행
frida -U -f b3nac.injuredandroid -l injuredandriod_flagsix.js --no-pause
아무 값이나 입력
cmd 창을 확인해보면 flag 값이 출력
결과
출처
https://aboutsc.tistory.com/164
https://infosecwriteups.com/injuredandroid-ctf-writeup-41dd40165cfa (파이썬 코드 참고)
'Study > App' 카테고리의 다른 글
[App]AndroGoat 루팅탐지(smali) (1) | 2022.09.14 |
---|---|
[App]InjuredAndroid FLAG SEVEN - SQLITE (0) | 2022.09.11 |
[App]InjuredAndroid FLAG FOUR - LOGIN 2 (0) | 2022.09.11 |
[App]InjuredAndroid FLAG THREE - RESOURCES (0) | 2022.09.11 |
[App]InjuredAndroid FLAG TWO - EXPORTED ACTIVITY (1) | 2022.09.11 |