안드로이드에 관하여/안드로이드 CTF

    PicoCTF [droids 3]

    PicoCTF [droids 3]

    문제 해결 이번문제를 봤을때 든 풀이 방법은 "코드 패치 , 후킹" 두가지 였습니다. 코드 패치를 해봤는데 코드 패치후 서명까지 했는데도 제가 뭐가 실수가 있었는지 설치가 안되었습니다. 다음에 공부하고 다시 블로그에 쓰던가 해야 할것 같습니다. 그래서 이번에는 후킹으로 진행 하겠습니다. import frida,sys def on_messaege(message,data): print("{} -> {}".format(message,data)) #제일 중요한 후킹 코드 hook_code = """ Java.perform(function() { console.log("[*] HOOK START"); var Target = Java.use("com.hellocmu.picoctf.FlagstaffHill"); Ta..

    PicoCTF [droids 2]

    PicoCTF [droids 2]

    문제 해결 이번에는 저번과 다른 뭔가 특별히 필요한것이 없는 pico vaultdoor 같은 문제이다. a = ["weatherwax", "ogg", "garlick", "nitt", "aching", "dismass"] second = 0 third = 1 four = 2 five = 5 print(a[five],".",a[third],".",a[second],".",a[(five+second)-third],".",a[3],".",a[four]) 이러면 "dismass.ogg.weatherwax.aching.nitt.garlick" 가 나옵니다. 이걸 입력하면

    pico CTF [droid 1]

    pico CTF [droid 1]

    문제 풀이 이번에도 MainActivity 에서 중요한 부분은 여기입니다. 이번에도 FlagstaffHill을 찾아가야 할것 같습니다. FlagstaffHill에서 R.string.password와 비교 하는 것을 볼 수 있습니다. 가봅시다. 흠.... 우리가 원하는 정보가 저걸까요? 그래서 전 저 숫자를 쳐봤더니 당연히 아닙니다. 그래서 검색을 해봤더니 어플에서 이용하는 모든 리소스들은 res/values폴더에 xml 형식으로 저장이 된다고 합니다. 위를 보면 유추할수도 있겠지만 우리가 찾는 password는 string일것이라고 생각됩니다. 하지만 더 정확히 알기 위해 모든 리소스가 정리되어있는 res/values/public.xml 을 확인 하면 됩니다. 더보기 *public.xml이 하는일 (🚨자..

    pico CTF [droid 0]

    pico CTF [droid 0]

    문제 풀이 화질이 좋진않지만 mainactivity를 볼때 가장 중요한 부분은 이 부분이다. 여기서 얻을 수 있는 정보는 hellojni라는 라이브러리를 사용한다는 점과 FlagstaffHill을 사용해서 Flag를 출력한다는 점이다. FlagstaffHill을 확인해보겠습니다. 글을 쓰면 paprika라는 함수를 통해 나온 리턴 값과 앞에 PICO를 붙혀서 로그가 찍히고 그후 Not Today를 리턴 해준다는 것을 볼 수 있습니다. 여기서 바로 확인 할 수 있을것 같았습니다. adb에 접속해서 logcat | grep PICO 를 하면 바로 Flag를 알 수 있습니다. *Logcat은 기기에서 오류가 발생할 때의 스택 트레이스와 앱에서 아까와 같이 Log 클래스로 작성한 메시지를 비롯하여 시스템 메시지..