관리 메뉴

Information Security

FridaLab - Bruteforce check07Pin() then confirm with chall07() 본문

모바일/Frida

FridaLab - Bruteforce check07Pin() then confirm with chall07()

HackingPractice 2020. 12. 15. 18:14

uk.rossmarks.fridalab.MainActivitiy 내부에 chall07() 메서드가 존재하며 내부에 if, else문이 있다. 어떤 메서드를 호출했을 때 값이 참이 되면 7번째 값을 1로 setting 하여 빨간색 글씨를 초록색으로 변화시킨다. (문제

chall07() 메소드에서 String 자료형을 받아온 것을 if문 내부에 있는 check07Pin() 메서드를 호출할 때 인자 값으로 주어지고 있다. 이 값을 true로 만들어 보자.

[Ctrl] 버튼을 누른 상태에서 challenge_07을 클릭하면, 해당 클래스로 이동할 수 있다.

그림 7-1 MainActivity

클래스 내부에 check07Pin()이 동작한다. 인수로 받아온 String 값이 chall07과 같으면 true를 반환한다.

chall07 값은 어디서 불려 오는지 살펴보면 상단의 setChall07() 임을 알 수 있다. chall07 변수를 setting 하고 있는데,

Match.random() 함수로 랜덤 하게 숫자를 만들어 int형으로 변환한다. 변환한 값에 1000을 더하여 chall07을 초기화한다.

Match.random() * 9000.0d의 범위는 0 ~ 9000이며, 1000을 더하였으므로 총범위는 1000 ~ 9999가 된다.

문제에서 의도한 것처럼 1000 ~ 9999 범위에서 무작위 대입 공격으로 해결할 수 있도록 한다.

그림 7-2 Challeng_07

setChall07을 입력하여 어느 곳에서 작동하는지 살펴보기 위해 MainActivity를 선택하여 [Open]한다.

그림 7-3 setchall07

setChall07() 메서드를 호출하여 chall07 변수를 setting 하고 있다.

그림 7-4 MainActivity

1. challenge_07을 사용하기 위한 java.use

2. MainActivity에 있는 인스턴스를 찾아와서 1번에서 true값이 나온 값을 chall07 호출하면서 인자 값을 넣어주기

그림 7-5 JavaScript

자바스크립트를 실행 주면 콘솔 로그 출력과 함께 Challenge 07 문제를 해결한 것을 알 수 있다.

그림 7-6 해결

FridaLab 앱에서 [CHECK] 버튼을 클릭하여 문제 해결한 것을 알 수 있다.

그림 7-7 FridaLab