EYEN

FridaLab 본문

Wargame/android

FridaLab

EYEN 2024. 5. 17. 21:51

#1 클래스안의 변수값 바꾸기

1) 문제

 

2) 풀이

uk.rossmarks.fridalab.challenge_01.chall01=1로 하면

getChall01int==1true라서 색이 바뀜

 

3) 답

 

 

 

#2 메인 액티비티 안에서만 호출가능한 chall02 호출하기

1) 문제

2) 풀이

privatechall02 클래스. 실행시키면 색이 바뀜

Java.perform(function(){

Java.choose(uk.rossmarks.fridalab.MainActivity),{

chall02()

}

onMatch로 인스턴스를 호출해서 onComplete로 마무리

onMatch(instance);

choose해서 instance에 저장된걸 main=instance; main.chall02()

 

3) 답

 

 

#3 후킹해서 출력값 바꾸기

1) 문제

2) 풀이

출력형식 booleanchall03, false인디...

chall03을 후킹해서 implementation으로 내용을 조작하자.

 

uk.rossmarks.fridalab.MainActivity.chall03.implementation(){

return true;}

Java.perform(function(){
var main;
Java.choose(‘uk.rossmarks.fridalab.MainActivity’,{
“onMatch”:function(instance)
main=instance
main.chall03.overload().implementation=function(){
return true;
}

3) 답

 

 

#4 chall04 파라미터를 frida

1) 문제

2) 풀이

2번에 파라미터만 달면

implementation으로 chall(frida)

uk.rossmarks.fridalab.MainActivity.chall04:

Java.perform(function(){
var main;
Java.choose(‘uk.rossmarks.fridalab.MainActivity’,{
“onMatch”:function(instance)
main=instance
main.chall04(frida)

#)overload().implementation=function(){

 

3) 답

 

 

#5 파라미터 string으로 설정해서 실행

1) 문제

2) 풀이

3번과 마찬가지지만,,.,..,. 반짝하고 사라져버림

반복문으로 chall05(str)돌려버려

Java.perform(function(){
var main;
Java.choose(‘uk.rossmarks.fridalab.MainActivity’,{
“onMatch”:function(instance)
main=instance
main.chall05.overload(java.lang.String’).implementation
this.chall05(“frida”);

중복중에 스트링형 얘는 스트링형이니ᄁᆞ this.로 지금 이거 실행

3) 답

 

#6 난이도 급상승! 시간을 두고 함수를 굴리세용

1) 문제

2) 풀이

confirmchall06true여야함.

return chall06int인데 초기화 안함. timestart> timestart+10000 = 항상 false?

uk.rossmarks.fridalab.challenge_06.implementation

startTime 이후 10000=10초 넘게 기다리기

addChall06(i)

chall06>9000 chall06=i

Java.perform(function(){
var main;
Java.choose(‘uk.rossmarks.fridalab.MainActivity’,{
“onMatch”:function(instance)
main=instance
main.chall06(양수)
10000뒤
java.use(uk.rossmarks.fridalab.challenge_06.confirmChall06

 

3) 답

 

 

#7 변수 값 전수조사하기, 반복문 조건문

1) 문제

2) 풀이

uk.rossmarks.fridalab.chall07.check07Pin.implementation(chall07)

chall07buildconfig+flavor + 랜덤값*9000+1000인데 그걸 맞춰야됨

브루트포스

chall07= buildconfig+flavor+9000i+1000

buildconfig는 아무것도 아님..

main=java.choose(~main.Activity
class=java.use(~challenge)
for (int I=0;i<10000;i++){
if class.check07pin==i
chall07=9000*i+1000
main.chall07()
}

 

3) 답

 

 

 

#8 또 난이도 급상승! 특정 id값을 가진 액티비티내 버튼의 텍스트값 바꾸기

1) 문제

2) 풀이

check = “Confirm”

얘는 button의 스트링 checkimplementation해서 confirm으로

 

java.choose(메인 액티비티)

btn=java.use('android.widget.button');

btn..implementation

btn=if R.id.check=0x7f07002f

btnclass=main.findviewbyid()

btn=’confirm’

=>java.cast(checkid,btnclass)

javacast란 타입을 변환하는 것 우리는 id를 바꿔야함

여기까지가 (button)findviewbyid(r.id.check)를 의미

 

이제 바꾸기

check.은 텍스트칸,

check.setText(“Confirm”)
#스트링으로
check.setText(string.(“Confirm”))

not a function: 변수명이랑 뭐 다른 함수랑 겹치는 idname 있는지 확인하란다.

문제되는게 check인지 confirm인지 모르겠어서

 

confirmidname이 있다고 한다. 그럴 것 같다.

근데 그걸 어떻게 바꾸지..

check.setText(string.$new(“confirm”)

이런 방법이!!

 

3) 답

 

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

안드로이드 CVE 스터디-improper Access Control  (0) 2024.05.18
안드로이드 CVE 스터디-information disclosure/SQL injection  (0) 2024.05.18
DIVA 13단계  (0) 2024.05.07
DIVA 12단계  (0) 2024.05.07
DIVA 11단계  (0) 2024.05.07