
[FridaLab] FridaLab 8번 문제풀이
2022. 4. 20. 18:32
Mobile/FridaLab
8번은 button에 적혀있는 CHECK 텍스트를 Confirm으로 바꾸면 되는 문제이다. 이건 이 문제를 이해하는데 목적을 맞추었다. 간단하게 button text 값이 confirm으로 바뀌면 true를 리턴하는 코드이다. 화면 바꾸는 국룰 코드?라서 보고 외워서 다른데 써먹어야겠다. poc보고 설명해놓는데 나을듯 > poc Java.perform(function() { console.log("[+] Hooking System.exit"); var klass = Java.use("android.widget.Button"); Java.choose("uk.rossmarks.fridalab.MainActivity", { "onMatch": function(instance) { var checkId = in..

[FridaLab] FridaLab 7번 문제풀이
2022. 4. 20. 16:54
Mobile/FridaLab
7번 문제는 bruteforce로 랜덤으로 설정된 chall07 값을 알아내서 호출하면 되는 문제이다. 우선 MainActivity를 보면 challenge_07.check07Pin(arg3) 값이 존재하면 된다. 6번과 마찬가지로 challenge_07 클래스에 check07Pin(arg3) 리턴 값이 존재하면 된다는 뜻이다. MainActivity 마지막부분에 setchall07을 호출하니 여기 후킹 걸면 될 듯? challenge_07 클래스를 들어가보자 setchall07 함수를 해석해보면 Math.random() : 0 ~ 1까지 실수 math.random() 값에 9000을 곱했으니 0.xxxxx ~ 9000.xxxx 값이고 이걸 int로 변환했으니 0 ~ 9000까지 값이다. 거기에 1000..

[FridaLab] FridaLab 6번 문제풀이
2022. 4. 20. 13:17
Mobile/FridaLab
6번 문제는 10초 뒤에 알맞은 값과 함께 challl06 함수를 실행하면 된다. 일단 코드부터 이해한 뒤 frida 코드를 짜주어야 한다. 가장 궁극적인 목표는 challenge_06.confirmChall06(arg3) 값이 존재해야 한다. 즉, challenge_06 클래스 안의 confirmChall06(arg3) 리턴 값이 존재해야 한다는 의미겠지? 그래서 challenge_06 클래스에부터 들어가 보았다. System.currentTimeMillis() : 현재시간 반환 이 함수의 리턴값이 존재해야 하는데 java 연산자 우선순위에 의거해 차례대로 해석해 보자면 * 우선순위 : == , > , && 1번과 2번이 둘 다 true면 리턴 값이 생기게 된다. 1번 은 addChall06 함수에 있..

[FridaLab] FridaLab 5번 문제풀이
2022. 4. 19. 17:22
Mobile/FridaLab
5번은 chall05 함수에 "frida"라는 단어를 항상 보내도록 하는 문제이다 프리다로는 java 소스코드 자체를 못 바꾸니 삽질 좀 했다. 겉보기에는 4번이랑 별 차이가 안 나서 설마 똑같이 해도 되나?라고 잠깐 생각했었다. onClick 부분에서 chall05 함수를 "notfirda!" 문자열로 바꿔서 호출하고 있었다. 저 호출하는 거 뒤에 내가 한 번 더 호출할 수 있게 코드 추가 안되나... 하며 이것저것 보고 있다가 우연하게 한 블로그에 들어가니 이런 글이 있었다. 어? this.메소드이름을 사용하면 기존 메소드를 사용할 수 있다고? 삽질하고 있던 이유가 chall05() 함수를 내가 바꿔버리면 this.completeArr[4] = 1; 이 부분도 같이 날아가 버리기 때문에 내가 한번 더..

[FridaLab] FridaLab 4번 문제풀이
2022. 4. 19. 16:27
Mobile/FridaLab
4번은 chall04()에 "frida"라는 단어를 보내면 되나 보다. 2번 문제 풀 때 instance를 불러왔었기 때문에 거기서 응용해보기로 함 > poc Java.perform(function() { Java.choose("uk.rossmarks.fridalab.MainActivity",{ onMatch : function(instance){ instance.chall04("frida"); console.log("[+] System.exit_4 called"); }, onComplete : function(){ } }) }) > 전체 코드 Java.perform(function() { console.log("[+] Hooking System.exit"); var exitClass = Java.use..

[FridaLab] FridaLab 3번 문제풀이
2022. 4. 19. 16:16
Mobile/FridaLab
3번은 chall03()을 true로 만들어주면 될거 같다. 쉬운거 같으니 빠르게 짜봄 > poc Java.perform(function() { var exitClass1 = Java.use("uk.rossmarks.fridalab.MainActivity"); exitClass1.chall03.implementation = function() { console.log("[+] System.exit_3 called"); return true; } > 전체 코드 Java.perform(function() { console.log("[+] Hooking System.exit"); var exitClass = Java.use("uk.rossmarks.fridalab.challenge_01");//hooking ..

[FridaLab] FridaLab 2번 문제풀이
2022. 4. 19. 13:50
Mobile/FridaLab
2번 문제는 chall02() 메소드만 실행시키면 되는 건가 보다. JEB로 디컴파일했다. 미리 선언되어 있는 chall02 메소드를 발견했다. 인스턴스를 불러오기 위해 Java.choose() 를 사용해야 겠다. > Java.choose() 기본 문법 https://mise.tistory.com/61 > poc Java.perform(function() { Java.choose("uk.rossmarks.fridalab.MainActivity",{ onMatch : function(instance){ instance.chall02(); console.log("[+] System.exit_2 called"); }, onComplete : function(){ } }) * 인스턴스란 실체화된 객체 라고 생각..

[FridaLab] FridaLab 1번 문제풀이
2022. 4. 19. 10:57
Mobile/FridaLab
Frida 사용을 위해 Fridalab 문제를 풀기로 했다. 환경 : nox Fridalab 첫 화면이다 1번 문제는 challenge_01의 chall01 값을 1로 바꾸라고 한다. JEB로 까 보니 challenge_01.getChall01Int 값이 1이면 성공인 거 같다. > poc Java.perform(function() { console.log("[+] Hooking System.exit"); var exitClass = Java.use("uk.rossmarks.fridalab.challenge_01");//hooking 할 메소드의 class 명 exitClass.getChall01Int.implementation = function() { //class명.method명.implementa..