상세 컨텐츠

본문 제목

FridaLab_04

CTF

by ser-ser 2025. 4. 15. 17:40

본문

FridaLab_04: 메서드에 문자열 전달하기

 

FridaLab의 네 번째 문제는 메서드에 특정 문자열을 전달하는 연습을 다룹니다. 이번 포스팅에서는 04번 문제를 풀며 프리다로 chall04() 메서드에 "frida" 문자열을 전송하는 방법을 배워보겠습니다.


문제 설명

문제: Send 'frida' to chall04()

  • 해석: chall04() 메서드에 "frida" 문자열을 전달해야 합니다.

소스코드 분석

chaall04() 메서드가 어디에 있는지 확인하기 위해 jadx-gui를 실행합니다.

  • 이전 MainActivity에 chall03~05를 확인했으니 MainActivity > chall04(String)으로 이동합니다.
    public void chall04(String str) {
        if (str.equals("frida")) {
            this.completeArr[3] = 1;
        }
    }

    • public: 외부에서 접근 가능한 메서드입니다.
    • String str: 문자열 파라미터를 받습니다.
    • str.equals("frida"): 입력된 문자열이 "frida"와 동일하면 completeArr[3]을 1로 설정합니다.
  • 목표: chall04() 메서드에 "frida"를 전달하면 문제가 해결됩니다.

프리다 자바스크립트 작성

이전 문제들에서 사용된 코드를 기반으로, chall04()에 "frida"를 전달하는 스크립트를 작성합니다:

Java.choose("uk.rossmarks.fridalab.MainActivity", {
            onMatch : function(c_04){
                c_04.chall04("frida");
            },
            onComplete : function(){
                console.log("movement!!!")
            }
        })

  • Java.choose("uk.rossmarks.fridalab.MainActivity",{~})
    • Java.choose를 사용해 MainAtivity 클래스의 인스턴스를 찾습니다.
    • uk.rossmarks.fridalab.MainActivity는 앱의 메인 클래스입니다.
  • onMatch: function(c_04) {c_04.chall04("frida");}
    • onMarch는 인스턴스가 발견될 때 호출됩니다.
    • c_04는 발견된 MainActivity 인스턴스를 나타냅니다.
    • c_04.chall04("frida")를 호출해 "frida" 문자열을 chall04() 메서드에 전달합니다.
  • onComplete: function() {console.log("movement!!!");}
    • 모든 인스턴스 탐색이 완료되면 콘솔에 "movement!!!"를 출력해 스크립트 실행을 확인합니다.

실행

  • 스크립트 저장 및 실행
    • 위 코드를 FridaLab_04.js로 저장합니다.
    • CMD에서 py3 환경에 접속한 뒤 frida -U -l FridaLab_04.js FridaLab을 입력합니다.
    • 스크립트가 실행되면 chall04("frida")가 호출되며, 콘솔에 "movement!!!"가 출력됩니다.
    • FridaLab 앱에서 'CHECK' 버튼을 클릭하면 04번 문제가 초록색으로 바뀌며 해결됨을 확인할 수 있습니다.

문제 해결 과정에서의 주의점

  • Java.choose 사용:
    • Java.choose는 런타임에서 MainActivity 인스턴스를 동적으로 찾아 메서드를 호출합니다. 이는 앱이 실행 중인 상태에서 특정 인스턴스를 대상으로 작업할 때 유용합니다.
    • 이전 문제(chall03)에서는 Java.use와 implementation을 사용해 메서드 자체를 재정의했지만, 이번에는 특정 값을 전달하는 것이 목표이므로 인스턴스를 찾아 직접 호출합니다.
  • 문자열 전달:
    • chall04()는 "frida" 문자열을 정확히 받아야 하므로, 스크립트에서 올바른 문자열을 전달하는 것이 중요합니다.

이번 포스팅에서는 FridaLab 04번 문제를 풀며 프리다로 메서드에 특정 문자열을 전달하는 방법을 배웠습니다.

'CTF' 카테고리의 다른 글

FridaLab_06  (1) 2025.04.17
FridaLab_05  (0) 2025.04.17
FridaLab_03  (0) 2025.04.15
FridaLab_02  (0) 2025.04.10
FridaLab_01  (0) 2025.04.10

관련글 더보기