fridaLab 7번 문제 풀이

심야·2025년 4월 10일
0

모의해킹

목록 보기
57/57
setImmediate(function() {
    Java.perform(function() {
        function hook(){
            var challenge07 = Java.use("uk.rossmarks.fridalab.challenge_07");
            Java.choose("uk.rossmarks.fridalab.MainActivity", {
                onMatch: function(instance) {
                    console.log("Bruteforce Start ! : " + instance);
        
                    // bruteforce 로직
                    while(true) {
                        var random = String(Math.floor(Math.random() * 9000) + 1000);
                        console.log("bruteforce chall07.value : " + random);
                        if (challenge07.check07Pin(random)) {
                            instance.chall07(random);
                            break;
                        } else {
                            console.log("original chall07.value : " + challenge07.chall07.value);
                        }
                    }
                },
                onComplete: function() {
                    console.log("Completed");
                    clearInterval(timerId); // setInterval 종료
                }
            });
        }

        var timerId = setInterval(hook, 10000); // 타이머 ID 저장 및 주기적으로 hookInstance 실행 (예: 1초 간격)
    }); // Java.perform 중괄호 닫기
}); // setImmediate 괄호 닫기

chall07.value 변수는 static 변수임
그래서 브루트 포싱으로 변수 값을 찾아내는 방법 대신 변수 값을 변조,
변조한 값으로 메소드를 호출해서도 문제를 해결할 수 있음

setImmediate(() => {
    Java.perform(function() {
        function hookInstance() {
            var challenge07 = Java.use("uk.rossmarks.fridalab.challenge_07");
            challenge07.chall07.value = "1"; // static 필드 수정

            Java.choose("uk.rossmarks.fridalab.MainActivity", {
                onMatch: function(instance) {
                    console.log(instance);
                    instance.chall07("1"); // MainActivity의 chall07 호출
                },
                onComplete: function() {
                    console.log("Completed");
                }
            }); // Java.choose 중괄호 닫기
        } // hookInstance 중괄호 닫기

        hookInstance(); // 함수 호출
    }); // Java.perform 중괄호 닫기
}); // setImmediate 괄호 닫기
profile
하루하루 성실하게, 인생 전체는 되는대로.

0개의 댓글