주어진 one.apk 파일을 dex2jar로 디컴파일해서 봤더니
FlagstaffHill라는 클래스가 있었고 안에 getFlag라는 함수가 있었다.
함수 내용을 보니 paramString으로 입력값인 문자열을 받아와 2131427375에 해당하는 문자열을 getString으로 가져와 비교해서 일치하면, 왼쪽의 fenugreek(paramString)을 리턴하고 아니면 NOPE이란 문자열을 리턴한다.
1) 2131427375에 맞는 문자열 찾기
2) 아무 문자열이나 어플에 쳐보니 NOPE이라고 밑에 뜨는 것을 보니, 맞는 문자열을 입력하면 flag가 그 자리에 뜰것같다.
먼저 1)에 대한 것을 찾기 위해 어플이 참조하는 리소스에 대한 정보를 res/values/public.xml에서 찾을 수 있었다.
dex2jar로는 리소스 파일이 다 디컴파일이 안되는것같아서 apktool로 다시 디컴파일해서 확인
public.xml 파일을 보면 안에 id와 함께 type, name이 짝지어져있는데, id값이 16진수라서 2131427375도 0x7F0B002F 값으로 찾아봤다.
타입이 string이고 name이 password인 값이었고, 같은 values폴더 안에 있는 strings.xml을 참조해 opossum 값을 찾았다.
이 값을 입력했더니 밑에 flag가 떴다.
opossum을 어플에 입력하면,
FLAG : picoCTF{pining.for.the.fjords}
'CTF > Reversing' 카테고리의 다른 글
[hackCTF] Reversing Me (0) | 2021.01.31 |
---|---|
[picoCTF] droids2 (0) | 2021.01.20 |
[picoCTF] droids0 (0) | 2021.01.12 |
[picoCTF] OTP Implementation (0) | 2021.01.12 |
[picoCTF] asm2 (0) | 2021.01.10 |