EYEN
FridaLab 본문
#1 클래스안의 변수값 바꾸기
1) 문제
2) 풀이
uk.rossmarks.fridalab.challenge_01.chall01=1로 하면
getChall01int==1이 true라서 색이 바뀜
3) 답
#2 메인 액티비티 안에서만 호출가능한 chall02 호출하기
1) 문제
2) 풀이
private인 chall02 클래스. 실행시키면 색이 바뀜
Java.perform(function(){
Java.choose(uk.rossmarks.fridalab.MainActivity),{
chall02()
}
onMatch로 인스턴스를 호출해서 onComplete로 마무리
onMatch(instance);
choose해서 instance에 저장된걸 main=instance; main.chall02()
3) 답
#3 후킹해서 출력값 바꾸기
1) 문제
2) 풀이
출력형식 boolean인 chall03, 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) 풀이
confirmchall06이 true여야함.
return chall06은 int인데 초기화 안함. 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)
chall07이 buildconfig+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의 스트링 check를 implementation해서 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: 변수명이랑 뭐 다른 함수랑 겹치는 id나 name 있는지 확인하란다.
문제되는게 check인지 confirm인지 모르겠어서
confirm인 id나 name이 있다고 한다. 그럴 것 같다.
근데 그걸 어떻게 바꾸지..
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 |