티스토리 뷰
문제 설명
This app contains some unique keys. Can you get one?
일단 이 문제는 문제 파일로 apk 파일을 하나 제공했습니다.
문제 분석
바로 디컴파일해서 분석을 해보았습니다.
activity 에는 MainActivity 하나만 정의되어 있네요. 이 부분만 보면 될 것 같습니다.
보아하니 id 가 admin 이고 pw 가 md5 hash 한 결과가 아래 if 문 안에 들어있는 hash 값과 일치하면 Toast Message 로 Flag가 나오는 것 같습니다.
사실 Toast.makeText 인자 중 두번째 인자의 값이 Flag 문자열로 추정되나, 한번 들어가보았지만 정말 복잡하기 그지 없었습니다. base64 인코딩된 문자열을 여러 ArrayList 로 분리해놓음은 물론이고, 중간중간에 약간의 난독화도 들어가 있어서, 비교적 쉬운 방법인 smali 코드 수정으로 문제를 해결하였습니다.
다행히 이번 문제에는 별도로 무결성 검증하는 로직이 없어서 리패키징이 가능했습니다.
코드 수정이 필요한 부분은 if 문 안에 있는 로직인데, 저 if 문을 무조건 참으로 만든다면 정말 쉽게 문제가 해결될 것입니다.
APK 리패키징 하는 방법에 대해서는 생략하도록 하겠습니다. 다른 포스팅에 자세히 설명되어 있으니 참고하시면 될 것 같습니다.
https://domdom.tistory.com/287
smali 코드 수정
아래 smali 코드를 보면 p1 이 equal to zero 조건이 되면 cond_1 로 이동한다고 합니다. 근데 cond_1 에 가서 보면 "Wrong Credentials!"가 나온다고 합니다. 그러면 cond_1 조건으로 가면 안되기 때문에 p1 조건이 무조건 0이 아닌 값이 되야될 것 같아 보입니다.
그래서 저는 p1 값을 임의로 무조건 1 값이 되도록 했습니다. 아래와 같이 말이죠.
const/4 p1, 0x1
이제 수정된 smali 코드를 저장하고 리패키징하고서 앱의 소스코드를 디컴파일 도구로 봐보겠습니다.
보니깐 if 부분이 (1 != 0) 이 되서 이제는 무조건 참 조건이 되어버린 것을 확인할 수 있습니다.
그리고 이제 앱을 설치하고 실행하면 아래와 같이 나옵니다.
위에서 Name 에는 admin 을 입력하고 Password 에는 아무것도 입력하지 않고 그냥 LOGIN 버튼을 눌러보았습니다. 그랬더니 아래와 같이 Flag 값이 나오는 걸 확인할 수 있었습니다.
- 끝 -
'보안 > Wargame' 카테고리의 다른 글
[Hackthebox] - Manager(Mobile) Writeup(문제풀이) (0) | 2021.12.09 |
---|---|
[Hackthebox] - Diogenes' Rage Writeup(문제풀이) (1) | 2021.12.08 |
[Hackthebox] - Don't Overreact Writeup(문제풀이) (0) | 2021.12.01 |
[Hackthebox] - Slippy Writeup(문제풀이) (0) | 2021.11.30 |
[Hackthebox] - Cat(Mobile) Writeup(문제풀이) (0) | 2021.11.29 |