목록AOS (64)
Self-Improvement
보호되어 있는 글입니다.
FridaLab Challenge 1 Change class challenge_01's variable 'chall01' to:1 MainActivity 에서 challenge_01 클래스의 getChall01Int() 메소드를 호출하여 chall01 변수의 값이 1이면 해결된다. Frida Java.perform(function() { var challenge1 = Java.use('uk.rossmarks.fridalab.challenge_01'); challenge1.chall01.value = 1; }); Challenge 2 Run chall02() chall02() 메소드는 MainActivity에 존재하지만 사용하지 않고 있다. 임의로 chall02() 메소드를 호출해준다. Frida chal..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
Uncrackable Level 3 Uncrackable Level 3 을 실행하면 Rooting or tampering이 탐지되었다고 한다. 이를 우회하기 위해서 디컴파일하여 소스코드를 확인해보면 각 검사하는 메소드들 중 참이 하나라도 존재하면 showDialog() 메소드가 동작되어 진다. showDialog() 메소드가 실행되면 System.exit(0)이 실행되어 어플리케이션이 그대로 종료가 되어진다. System.exit() 우회 위에서 분석된 내용을 토대로 어플리케이션이 종료되는 System.exit()를 후킹하여 우회해본다. import frida, sys Hook_package = "owasp.mstg.uncrackable3" def on_message(message, data): if m..
UnCrackable-Level 2 System.exit() 후킹 UnCrackable-Level 2을 실행하면 Level1과 동일하게 루팅을 탐지하는 로직이 존재하여 바로 종료가 되어진다. APK를 추출한 후 디컴파일하여 해당 로직을 확인해보니 이전 레벨과 동일하게 b 클래스의 a(), b(), c() 메소드를 확인하여 하나라도 참이면 루팅으로 간주하게 된다. 그리고는 System.exit()를 실행하여 그대로 종료가 되어짐으로 후킹하여 종료되지 않도록 해본다. import frida, sys Hook_package = "owasp.mstg.uncrackable2" def on_message(message, data): if message['type'] == 'send': print("[*] {0}"...
DIVA diva의 10. Access Control Issues Part2를 확인해보면 두가지 선택지가 있다. Register Now를 체크한 후 버튼을 누르면 아래와 같이 PIN을 입력하라는 화면으로 넘어가진다. Already Registered를 체크한 후 버튼을 누르면 API 정보를 볼 수 있는 화면으로 넘어가진다. 디컴파일 AccessControl2Activity 클래스의 소스코드를 확인해보면 intent를 선언해주고 aci2rbregnow의 값이 체크되어 있으면 chk_pin 변수는 true를 가지게 된다. 그리고 jakhar.aseem.diva.action.VIEW_CREDS2 로 선언된 액티비티로 전환하고 있으며 chk_pin의 값을 함께 전달하고 있다. activity_access_con..
DIVA diva의 8.Input Validation Issues Part 2이며 URL을 입력하면 보여주는 기능이 존재한다. 디컴파일 소스코드를 확인해보면 InputValidation2URISchemeActivity 클래스의 get 메소드에서 입력한 URL 값에 대한 검증이 존재하지 않는 것을 알 수 있다. 그리하여 URL에 내부 파일을 요청할 수 있는 file:// 형식으로 요청하게 되면 그대로 실행되어 파일 내용을 볼 수 있다. file:///etc/hosts
DIVA diva 어플리케이션의 7. Input Validation Issues이며 user name을 입력하여 검색할 수 있는 폼이 존재한다. admin을 입력하면 관련 정보가 출력되어진다. 디컴파일 소스코드를 확인해보면 SQLite 데이터베이스를 사용하며 sqliuser 테이블에 입력받은 값을 그대로 쿼리로 사용되어 진다. Sqli 입력 폼에 아래의 페이로드를 수행할 시 sqliuser 테이블에 있는 모든 사용자 정보가 출력된다. ' or '1
DIVA DIVA의 앱중 Insecure Logging 부분을 확인해보면 credit card number을 입력하는 곳이 있다. 주제 자체가 안전하지 않은 로깅임으로 입력을 해보고 로그를 확인해 보자. ADB adb logcat을 이용하여 확인하는데 이때 필터링을 diva로 하여 확인하면 더욱 좋다. 디컴파일 DIVA앱을 디컴파일하여 직접 확인하면 LogActivity 클래스에서 Log.e()를 사용하여 출력되는 것을 알 수 있다.