728x90
이번 포스트에서는 FridaLab의 Challenge 3 문제에 대해 다루겠다.
문제를 실행하면 다음과 같다.
## 문제 해석 :
Challenge 3의 문제 코드는 다음과 같다.
public boolean chall03() {
return false;
}
chall03 함수는 현재 false를 반환하고 있다. chall03가 true를 반환하게 해주면 된다.
## 문제 풀이 :
우선 우리가 삽입할 JS code를 실행해줄 JSInjector를 작성해보겠다.
### JSInjector :
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()
이어서 공격 코드를 작성해보겠다.
### 공격 코드 :
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;
}
})
### 실행 결과 :
이로써 FridaLab Challenge 3의 Crack를 마치겠다.
'Wargame > FridaLab' 카테고리의 다른 글
FridaLab (Challenge 6) (0) | 2022.09.30 |
---|---|
FridaLab (Challenge 5) (0) | 2022.09.29 |
FridaLab (Challenge 4) (0) | 2022.09.28 |
FridaLab (Challenge 2) (0) | 2022.09.26 |
FridaLab (Challenge 1) (0) | 2022.09.25 |