프리다랩 7번 풀이
2023. 4. 9. 16:42

7번 문제는 chall07Pin() 메소드를 브루트 포스를 하여 chall07() 메소드로 확인하면 되는 문제이다.
+) 브루트포스란 무작위 공격을 의미한다. 여기서 무작위 공격이란 전체 경우의 수를 다 대입하는 것을 뜻한다.

해당 코드를 확인해보면 인자로 전달된 var1의 값을 challenge_07클래스의 check07Pin() 메소드를 호출할 때 인자로 전달할 경우 참이면 초록불이 들어온다는 것을 확인할 수 있었다.

위 사진은 challenge_07을 정의한 부분이다.
setImmediate(function(){
Java.perform(function(){
var chall_07 = Java.use("uk.rossmarks.fridalab.challenge_07");
Java.choose("uk.rossmarks.fridalab.MainActivity",{
onMatch : function(instance){
for(var i=9999; i>=1000; i--){
var takudaddy = String(i);
if(chall_07.check07Pin(takudaddy)){
console.log("\n[+] chall07 pin 값 :" + takudaddy);
instance.chall07(takudaddy);
break;
}
}
},
onComplete : function(){
}
})
})
})
해당 문제는 chall_07 변수에 challenge_07 클래스를 저장하고, MainActivity의 인스턴스를 가져와서 브루트포스를 진행해주면 된다.
for 문을 사용하여 1000~9999 까지의 값을 String 형으로 변환하여 Check07Pin() 메소드의 인자 값으로 전달하면 참을 반환했을 때가 chall07의 값이다.
따라서, 이 값을 MainActivity 인스턴스의 chall07() 메소드를 호출할 때 인자 값으로 전달하면 해결할 수 있다.


해당 코드를 연결시켜주면 7번에 초록불이 들어오는 것을 확인할 수 있다.
'Android - 실습' 카테고리의 다른 글
프리다랩 6번 풀이 (0) | 2023.04.02 |
---|---|
프리다랩 5번 풀이 (0) | 2023.03.30 |
FridaLab 4번 풀이 (0) | 2023.03.24 |
FridaLab 3번 풀이 (0) | 2023.03.22 |
FridaLab 2번 풀이 (0) | 2023.03.18 |