워게임
-
문제풀이 목표: 이것은 미사일 발사 앱입니다. 전쟁이 아닌 사랑을 퍼뜨려라! DOS 망할 것! 여기서 당신의 목표는 코드를 찾은 다음 미사일을 발사하는 것이 아니라 앱을 충돌시키는 것입니다(그리고 충돌의 근본 원인을 찾는 것입니다). 힌트: 입력을 사용하기 전에 필터링하거나 유효성을 검사하지 않으면 입력 유효성 검사 문제가 부적절하거나 전혀 발생하지 않습니다. 외부에서 입력을 받는 구성 요소를 개발할 때는 항상 유효성을 검사하십시오. 이것은 고전적인 메모리 손상 취약점입니다. 코드 실행을 얻을 수 있다면, 당신의 의견을 듣고 싶습니다. 나는 아무도 그렇게 멀리 갈 것이라고 기대하지 않습니다. 이와 같이 임의의 문자열과 so 파일에서 확인한 문자열을 삽입해보면, 상반된 결과 값이 출력되는 것을 확인할 수 ..
[Android] 13. 입력 유효성 검사 문제 - Part 3문제풀이 목표: 이것은 미사일 발사 앱입니다. 전쟁이 아닌 사랑을 퍼뜨려라! DOS 망할 것! 여기서 당신의 목표는 코드를 찾은 다음 미사일을 발사하는 것이 아니라 앱을 충돌시키는 것입니다(그리고 충돌의 근본 원인을 찾는 것입니다). 힌트: 입력을 사용하기 전에 필터링하거나 유효성을 검사하지 않으면 입력 유효성 검사 문제가 부적절하거나 전혀 발생하지 않습니다. 외부에서 입력을 받는 구성 요소를 개발할 때는 항상 유효성을 검사하십시오. 이것은 고전적인 메모리 손상 취약점입니다. 코드 실행을 얻을 수 있다면, 당신의 의견을 듣고 싶습니다. 나는 아무도 그렇게 멀리 갈 것이라고 기대하지 않습니다. 이와 같이 임의의 문자열과 so 파일에서 확인한 문자열을 삽입해보면, 상반된 결과 값이 출력되는 것을 확인할 수 ..
2022.11.29 -
문제풀이 목표: 무엇이 하드코딩되어 있고 어디에 있는지 알아내십시오. 힌트: 개발자는 때때로 쉽게 민감한 정보를 하드코딩합니다. 임의의 값을 입력 후 인증 요청 시 차단 문구가 출력되는 것을 확인 할 수 있다. 코드를 살펴보니, 인증 값이 divajni이라는 라이브러리 파일에 저장되어서 인증 시 값을 불려오는 로직을 확인하였다. apk 내의 lib 디렉터리에서 libdivajni.so 파일에서 문자열을 추출하였다. 추출된 문자열에서 의심이 되는 값을 넣어서 확인해보니, 인증에 성공하였다.
[Android] 12. 하드코딩 이슈 - Part 2문제풀이 목표: 무엇이 하드코딩되어 있고 어디에 있는지 알아내십시오. 힌트: 개발자는 때때로 쉽게 민감한 정보를 하드코딩합니다. 임의의 값을 입력 후 인증 요청 시 차단 문구가 출력되는 것을 확인 할 수 있다. 코드를 살펴보니, 인증 값이 divajni이라는 라이브러리 파일에 저장되어서 인증 시 값을 불려오는 로직을 확인하였다. apk 내의 lib 디렉터리에서 libdivajni.so 파일에서 문자열을 추출하였다. 추출된 문자열에서 의심이 되는 값을 넣어서 확인해보니, 인증에 성공하였다.
2022.11.29 -
문제풀이 목표: 이것은 개인 메모 응용 프로그램입니다. PIN을 한 번 생성하고 올바른 PIN을 입력한 후 메모에 액세스할 수 있습니다. 이제 PIN을 모른 채 앱 외부에서 개인 메모에 액세스해 보세요. 힌트: 앱의 구성 요소가 적절하게 보호되지 않은 경우 다른 앱이나 사용자가 액세스할 수 있으며 일부는 외부 입력을 허용할 수도 있습니다. 활동, 서비스, 콘텐츠 제공자와 같은 구성 요소는 이러한 경향이 있습니다. 위 사진과 같이 ①에서 비밀번호를 설정하여, 노트에 접근을 한다. ③처럼 접근 시 설정한 비밀번호으로 인증하여 노트를 볼 수 있다. 위와 같이 틀린 비밀번호를 입력 시 거부되는 것을 확인할 수 있다. 해당 문제는 비밀번호를 모르는 상태에서 인증을 우회하여 개인 노트의 데이터에 접근하는 것이 목표..
[Android] 11. 접근 제어 이슈 - Part 3문제풀이 목표: 이것은 개인 메모 응용 프로그램입니다. PIN을 한 번 생성하고 올바른 PIN을 입력한 후 메모에 액세스할 수 있습니다. 이제 PIN을 모른 채 앱 외부에서 개인 메모에 액세스해 보세요. 힌트: 앱의 구성 요소가 적절하게 보호되지 않은 경우 다른 앱이나 사용자가 액세스할 수 있으며 일부는 외부 입력을 허용할 수도 있습니다. 활동, 서비스, 콘텐츠 제공자와 같은 구성 요소는 이러한 경향이 있습니다. 위 사진과 같이 ①에서 비밀번호를 설정하여, 노트에 접근을 한다. ③처럼 접근 시 설정한 비밀번호으로 인증하여 노트를 볼 수 있다. 위와 같이 틀린 비밀번호를 입력 시 거부되는 것을 확인할 수 있다. 해당 문제는 비밀번호를 모르는 상태에서 인증을 우회하여 개인 노트의 데이터에 접근하는 것이 목표..
2022.11.29 -
문제풀이 목표: 타사 앱에 액세스할 수 있습니다. Teeter에 등록한 TVEETER API 자격 증명. 앱에서 온라인 등록을 요청하고 공급업체에서 앱에 등록하는 데 사용할 수 있는 핀을 제공합니다. 이제 PIN을 모른 채 앱 외부에서 API 자격 증명에 액세스해 보십시오. 이것은 비즈니스 논리 문제이므로 코드를 확인해야 할 수도 있습니다. 힌트: 앱의 구성 요소가 적절하게 보호되지 않은 경우 다른 앱이나 사용자가 액세스할 수 있으며 일부는 외부 입력을 허용할 수도 있습니다. 활동, 서비스, 콘텐츠 제공자와 같은 구성 요소는 이러한 경향이 있습니다. 해당 문제는 "Register Now." 체크박스에 체크 후 "VIEW TVEETER API CREDENTIALS" 버튼을 클릭하여 요청 시 출력되는 PIN..
[Android] 10. 접근 제어 이슈 - Part 2문제풀이 목표: 타사 앱에 액세스할 수 있습니다. Teeter에 등록한 TVEETER API 자격 증명. 앱에서 온라인 등록을 요청하고 공급업체에서 앱에 등록하는 데 사용할 수 있는 핀을 제공합니다. 이제 PIN을 모른 채 앱 외부에서 API 자격 증명에 액세스해 보십시오. 이것은 비즈니스 논리 문제이므로 코드를 확인해야 할 수도 있습니다. 힌트: 앱의 구성 요소가 적절하게 보호되지 않은 경우 다른 앱이나 사용자가 액세스할 수 있으며 일부는 외부 입력을 허용할 수도 있습니다. 활동, 서비스, 콘텐츠 제공자와 같은 구성 요소는 이러한 경향이 있습니다. 해당 문제는 "Register Now." 체크박스에 체크 후 "VIEW TVEETER API CREDENTIALS" 버튼을 클릭하여 요청 시 출력되는 PIN..
2022.11.29 -
문제풀이 목표: 버튼을 클릭하면 API 자격 증명에 액세스할 수 있습니다. 이제 앱 외부에서 API 자격 증명에 액세스해 봅니다. 힌트: 앱의 구성요소는 적절하게 보호되지 않은 경우 다른 앱이나 사용자가 액세스할 수 있습니다. 활동, 서비스, 콘텐츠 제공자와 같은 구성 요소는 이러한 경향이 있습니다. 이번 문제는 버튼을 클릭하지 않고, 위 사진의 액티비티로 이동해야하는 문제이다. 코드를 확인해보니, jakhar.aseem.diva.action.VIEW_CREDS으로 이동되는 코드를 확인할 수 있었다. 해당 액션이 어떤 액티비티를 호출하는지를 알아내기 위해 AndroidManifest.xml에서 찾아보니, APICredsActivity를 호출하는 것을 확인하였다. adb의 am을 이용하여 해당 액티비티 호..
[Android] 09. 접근 제어 이슈 - Part 1문제풀이 목표: 버튼을 클릭하면 API 자격 증명에 액세스할 수 있습니다. 이제 앱 외부에서 API 자격 증명에 액세스해 봅니다. 힌트: 앱의 구성요소는 적절하게 보호되지 않은 경우 다른 앱이나 사용자가 액세스할 수 있습니다. 활동, 서비스, 콘텐츠 제공자와 같은 구성 요소는 이러한 경향이 있습니다. 이번 문제는 버튼을 클릭하지 않고, 위 사진의 액티비티로 이동해야하는 문제이다. 코드를 확인해보니, jakhar.aseem.diva.action.VIEW_CREDS으로 이동되는 코드를 확인할 수 있었다. 해당 액션이 어떤 액티비티를 호출하는지를 알아내기 위해 AndroidManifest.xml에서 찾아보니, APICredsActivity를 호출하는 것을 확인하였다. adb의 am을 이용하여 해당 액티비티 호..
2022.11.29 -
문제풀이 목표: 웹 URL을 제외한 모든 민감한 정보에 액세스해 보십시오. 힌트: 입력을 사용하기 전에 필터링하거나 유효성을 검사하지 않으면 입력 유효성 검사 문제가 부적절하거나 전혀 발생하지 않습니다. 외부에서 입력을 받는 구성 요소를 개발할 때는 항상 유효성을 검사하십시오. URL을 입력 시에 웹뷰를 통해 웹 사이트가 출력이 되었다. 하지만, http가 아닌 file을 삽입함으로 디바이스 내 저장된 파일을 출력하도록 하겠다. file:///data/data/jakhar.aseem.diva/shared_prefs/jakhar.aseem.diva_preferences.xml을 입력하여 저장된 데이터를 출력하였다. 코드를 확인해보니, 입력 값을 검증 없이 그대로 사용하여 내부 파일이 출력이 되었다.
[Android] 08. 입력 유효성 검사 문제 - Part 2문제풀이 목표: 웹 URL을 제외한 모든 민감한 정보에 액세스해 보십시오. 힌트: 입력을 사용하기 전에 필터링하거나 유효성을 검사하지 않으면 입력 유효성 검사 문제가 부적절하거나 전혀 발생하지 않습니다. 외부에서 입력을 받는 구성 요소를 개발할 때는 항상 유효성을 검사하십시오. URL을 입력 시에 웹뷰를 통해 웹 사이트가 출력이 되었다. 하지만, http가 아닌 file을 삽입함으로 디바이스 내 저장된 파일을 출력하도록 하겠다. file:///data/data/jakhar.aseem.diva/shared_prefs/jakhar.aseem.diva_preferences.xml을 입력하여 저장된 데이터를 출력하였다. 코드를 확인해보니, 입력 값을 검증 없이 그대로 사용하여 내부 파일이 출력이 되었다.
2022.11.29