관리 메뉴

Information Security

FridaLab - Always send "frida" to chall05() 본문

모바일/Frida

FridaLab - Always send "frida" to chall05()

HackingPractice 2020. 5. 11. 20:50

Challenge 05는 Challenge 04와 비슷하다. 04는 문자열을 한 번만 전송하면 되지만 05는 항상 전송해야 한다는 차이점이 존재한다.

그림 1-1 Challenge05

if문 안의 로직은 chall04()와 동일하다. 여기서는 else문이 추가되어 전송되지 안흥면 0으로 변경된다. 함수를 보면 한 번이라도 다르면 체크를 해제하고 있는 것을 알 수 있다. 실시간으로 [CHECK]  버튼을 클릭할 때마다 "frida" 문자열이 전달되어야 해결할 수 있다. uk.rossmarks.fridala.MainActivity 내부에 있는 chall05() 메소드를 재작성한다. this.chall05()를 사용하여 호출 시, 기준 chall05()가 가진 메소드의 행위를 수행할 수 있도록 해준다. 내부 로직은 기본 로직을 이용하고 인자 값을 "frida" 문자열 넣는다.

그림 1-2 소스코드

overload를 사용한 이유는 MainActivity 안에 chall05() 메소드가 하나만 존재하지만 chall05(){}가 존재한다고 가정하고 작성했기 때문이다. 현재 스트링에 대한 인자 값을 사용했으므로 "java.lang.String"을 사용하고 하나의 인자 값을 받으므로  arg로 인수명을 설정해 주었다.

그림 1-3 자바스크립트 코드

해당 소스코드를 실행한 후 FirdaLab에서 Check 버튼 클릭할 때마다 frida 문자열이 성공적으로 전송되었음을 확인한다.

그림 1-4 FridaLab 실행

FridaLab 앱을 확인하면 5번 문제가 해결된 것을 알 수 있다.

그림 1-5 FridaLab