일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Openstack
- foremost
- Suninatas
- vulnhub
- SQL Injection
- Volatility
- 2018
- Docker
- 인시큐어뱅크
- frida
- lord of sql injection
- XSS
- igoat
- diva
- ctf
- base64
- kibana
- otter
- Strings
- Reflected XSS
- InsecureBank
- 안드로이드
- beebox
- logstash
- ESXi
- CTF-d
- NTFS
- elasticsearch
- 파이썬
- MFT
- Today
- Total
Information Security
Uncrackable1 - 암호화 본문
이번 문제는 암호를 복호화하는 것이다.
임의 값인 test를 입력한 후 검증 버튼을 클릭하면 다시 시도해보라는 메시지를 보여준다.
jadx 프로그램을 통해 text search에서 Nope 검색했다.
MainActivity 클래스 내부에 Verify 메서드가 있고 해당 메서드 내부에 찾은 메시지를 볼 수 있다.
성공하면 Success! 문자가 실행된다. obj의 변수에 String 객체에 들어간다. a클래스 내부의 a메서드 내부의 인자 값으로 obj가 들어간다. true가 나오면 보이는 Success! 메시지가 보이고 false가 나오면 Nope 메시지를 보여준다.
a클래스의 a메소드에 들어가면 string객체를 받고 있고 입력했던 값이 str에 들어가서 활용이 된다. bArr 더블클릭하면 byte 배열로 선언해 준 다음에 try 구문으로 실행하고 있다.
a를 따라가보면 sg.vantagepoint.a에 있는 패키지 내부에 있는 a클래스 내부의 a메서드를 확인할 수 있다. byte 배열로 두 가지를 받고 있다. 내부에는 AES 암호화 방식을 이용해서 만들고 있으며 암/복호화 단계가 이뤄지고 있다.
여기서 해결 할 수 있는 방법을 2가지로 나눌 수 있다.
1. a.a.(obj)를 무조건 true값 반환하여 이상한 값을 넣어도 통과될 수 있도록
2. str(우리가 입력했던 문자)를 암호화 과정이 없으니 Abrr과 비교하고 있다. Abrr은 복호화된 일반 문자 값(secret string)이 될 것이다. 이것을 찾기 위해서는 bArr이 해당 a.a.a메서드에서 반환된 값을 넣어주기 때문에 메서드를 후킹 해서 복호화된 값을 찾아서 올바른 값을 입력 후 성공이 나오도록 한다.
첫번째 방법
1. 제일 쉬운 방법 : a.a 메서드를 후킹 하여 안의 내용을 모두 지워버린 후 return true;를 반환하도록 한다.
함수를 재작성할 것이기 때문에 Java.use를 사용한다.
자바스크립트를 인젝션 시키면 콘솔 로그와 함께 성공 메시지를 확인할 수 있다.
test1234 입력 시 성공 메시지를 보여준다.
두번째 방법
2. 다시 처음으로 들어와 MainActivity에서 확인해 보자
a.a(obj) 값을 넣어서 true가 반환되면 성공이라는 문자가 출력된다. 임의의 값을 넣어 true가 반환되는 것이 아닌 올바른 값을 넣어서 성공하는 구문을 출력하게 할 것이다. bArr과 비교하고 인자 값 바이트 배열 두 개를 주고 있다.
입력한 값을 ASCII 코드를 출력하는 소스코드이다.
앱에서 입력한 값을 ASCII 코드로 출력해준다.
fromCharCode()는 아스키코드를 받아서 문자열로 구성하는 역할을 해주는 함수다.
secret string 값은 I want to believe임을 알 수 있다.
I want to believe 값을 입력하면 Success! 메시지를 보여주는 것을 알 수 있다.
'모바일 > Frida' 카테고리의 다른 글
Frida - sieve.apk BruteForce PIN (0) | 2020.12.21 |
---|---|
Frida - sieve.apk 로그인 우회 (1) | 2020.12.20 |
UnCrackable - Level1 (0) | 2020.12.17 |
FridaLab - Change 'check' button's text value to 'Confirm' (0) | 2020.12.16 |
FridaLab - Bruteforce check07Pin() then confirm with chall07() (0) | 2020.12.15 |