Self-Improvement
[DIVA] 13. Input Validation Issues - Part 3 (strcpy() - Bof) 본문
Launch Code를 입력하라고 되어있다.
InputValidation3Activity 클래스를 확인해보면 DivaJni 클래스로 djni 객체를 생성한 후 initiateLaunchSequence() 메소드를 수행하여 return 값이 0이 아니면 "Launching in T - 10 ..." 메시지가 출력된다.
DivaJni 클래스를 확인해보면 divajni 라이브러리를 로드하고 있고 initiateLaunchSequence() 메소드는 네이티브로 작성되어 있는 것을 확인할 수 있다.
divajni 라이브러리의 initiateLaunchSequence() 함수를 보면 궁극적으로 return 하는 곳에서 strncmp() API로 ".dotdot" 문자열과 비교를 하고 있다.
중요한 것은 입력한 값을 가져올 때 strcpy() API를 사용한다는 것이며 해당 API는 Bof가 발생하는 취약한 함수가 되겠다.
strcpy()에서 사용되는 v3에 0x18보다 큰 값을 입력할 시 Bof가 발생하게 된다.
실제로 임의의 값을 많이 입력한 후 버튼을 누를 시 Bof가 발생하여 해당 액티비티가 종료하게 된다.
'AOS > DIVA' 카테고리의 다른 글
[DIVA] 12. Hardcoding Issues - Part 2 (JNI, loadLibrary) (0) | 2021.12.21 |
---|---|
[DIVA] 10. Access Control Issues - Part 2 (0) | 2021.10.31 |
[DIVA] 8. Input Validation Issues - Part 2 (0) | 2021.10.31 |
[DIVA] 7. Input Validation Issues - Part 1 (SQLite Database, SQLi) (0) | 2021.10.31 |
[DIVA] 1. Insecure Logging (adb logcat) (0) | 2021.10.31 |