Yozzang의 해킹일기 💻
article thumbnail
Published 2022. 9. 29. 00:05
FridaLab (Challenge 5) Wargame/FridaLab
728x90

이번 포스트에서는 FridaLab의 Challenge 5 문제에 대해 다루겠다.


문제를 실행하면 다음과 같다.

FridaLab

1. ## 문제 해석 : 

Challenge 5의 문제 코드는 다음과 같다.

<java />
public void chall05(String str) { if (str.equals("frida")) { this.completeArr[4] = 1; } else { this.completeArr[4] = 0; } }

Main함수에서 이미 "notfrida"라는 인자를 가진 chall05 함수를 호출하고 있으며 해당 함수를 "frida"라는 인자로 재호출하면 되는 것으로 보인다.

2. ## 문제 풀이 :  

우선 우리가 삽입할 JS code를 실행해줄 JSInjector를 작성해보겠다.

### JSInjector : 

<python />
import frida,sys import argparse def on_message(message, data): if message['type'] == 'send': print(message['payload']) elif message['type'] == 'error': print(message['stack']) def get_messages_from_js(message, data): print (message['payload']) def get_script(script_name): with open("./"+script_name, 'r') as f: script = f.read() return script help_script = """ HELP """ package_name = "com.Early.touch_touch" parser = argparse.ArgumentParser(description=help_script) parser.add_argument('--script', required=True, help='JS File to Inject') args = parser.parse_args() device=frida.get_usb_device() p1=device.spawn([package_name]) process_session=device.attach(p1) device.resume(p1) script = process_session.create_script(get_script(args.script)) script.on('message',on_message) script.load() sys.stdin.read()

이어서 공격 코드를 작성해보겠다.

### 공격 코드 : 

<javascript />
console.log("[+] Inject Success!") // 연결 확인 Java.perform(function () { // chall01 var challenge_01_class = Java.use('uk.rossmarks.fridalab.challenge_01'); challenge_01_class.chall01.value = 1; // chall02 var MainActivity_class_c2; Java.choose('uk.rossmarks.fridalab.MainActivity', { onMatch: function (classInstance) { // 찾으면 실행 MainActivity_class_c2 = classInstance; // 클래스 정체 초기화 }, onComplete: function () { } }); MainActivity_class_c2.chall02(); // chall03 var MainActivity_class_c3 = Java.use('uk.rossmarks.fridalab.MainActivity') MainActivity_class_c3.chall03.implementation = function () { console.log('Hooking Function Called!') return true; } // chall04 Java.choose('uk.rossmarks.fridalab.MainActivity', { onMatch: function (classInstance) { classInstance.chall04("frida"); }, onComplete: function () { } }) // chall05 var MainActivity_class_c5 = Java.use('uk.rossmarks.fridalab.MainActivity'); MainActivity_class_c5.chall05.implementation = function (arg1) { this.chall05('frida'); } })

 

### 실행 결과 :

공격 성공

이로써 FridaLab Challenge 5의 Crack를 마치겠다.

'Wargame > FridaLab' 카테고리의 다른 글

FridaLab (Challenge 6)  (0) 2022.09.30
FridaLab (Challenge 4)  (0) 2022.09.28
FridaLab (Challenge 3)  (0) 2022.09.27
FridaLab (Challenge 2)  (0) 2022.09.26
FridaLab (Challenge 1)  (0) 2022.09.25
profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!