EYEN

DIVA 2단계 본문

Wargame/android

DIVA 2단계

EYEN 2024. 5. 2. 02:00

#1 문제 분석

가. 목적

뭐가 하드코딩되고 어디에 있는지 알기

나. 활용

소스코드, adb

 

#2 취약점 정보

가. 취약점

하드코딩된 비밀키=> 소스코드에 대놓고 비밀키 공개됨

나. 취약점 확인법

소스코드 확인시 암호화되지 않은 키를 확인할 수 있음

다. 소스코드에 비밀키가 있는 게 취약점인 이유

루팅과 난독화 해제 등을 통해 소스코드를 볼 수 있는 단계까지 가면 바로 권한 획득 가능

라. 하드코딩하는 이유

   1. 일회성으로 사용되는 값인 경우

           ex)

for (int i = 0; i < 10; i++)

 

public void processInput(String input)
//input을 processInput 메서드가 실행되는 동안에만 사용

 

boolean isTemporary = true;
if (isTemporary) {//임시적으로 설정된 상태 플래그
    System.out.println("어쩌구저쩌구.");
}

 

int result = calculateResult();
//임시 결과 값
System.out.println("계산 결과: " + result);

 

 

 2. 상수 값일 경우

int SECONDS_IN_MINUTE = 60;
int MINUTES_IN_HOUR = 60;
int HOURS_IN_DAY = 24;
// 시간과 날짜를 다룰 때
int MAX_INTEGER_VALUE = Integer.MAX_VALUE;
int MIN_INTEGER_VALUE = Integer.MIN_VALUE;
// 정수 데이터 타입의 최대/최소 값

등등... 음

 

 #3 코드 분석(1과 다른 부분)

 

1. 

setContentView(R.layout.activity_hardcode);

setContentView: android 애플리케이션에 화면을 설정하는 데 사용되는 메서드

activity_hardcode.xml을 화면에 표시

 

12. 

public void checkout(View view) {

 

버튼이나 다른 뷰를 클릭했을 때 호출되는 이벤트 핸들러 메서드

View는 클릭된 뷰, 이게 view 파라미터로 전달된다.

그래서 이 메서드 내에서는 클릭된 뷰에 대한 작업을 수행한다.

 

 

13. 

EditText hckey = (EditText) findViewById(R.id.hcKey);

 

액티비티나 프래그먼트에서 XML 레이아웃 파일에서 정의한 EditText 요소를 참조하는 코드

EditText hckey: hckey라는 텍스트입력칸 객체를 참조하는 변수 선언

findViewByid: XML 레이아웃에서 hckey라는 id를 가진 뷰를 찾아

(EditText): EditText 클래스로 형변환(굳이? EditText 클래스의 인스턴스임을 보장하기 위함)

 

14.

if (hckey.getText().toString().equals("vendorsecretkey")) {

 

hckey라는 객체에서 getText로 문자열을 가져와 String형으로 바꿔서 제시된 문자열과 같은지 비교함

 

 

15.

Toast.makeText(this, "Access granted! See you on the other side :)", 0).show();

 

 

this: 토스트 메시지를 표시할 컨텍스트로 액티비티(HardcodeActivity)의 인스턴스(class HardcodeActivity의 객체 그냥 화면 레이아웃) 를 전달한다.

0=Toast.LENGTH_SHORT(<=>Toast.LENTH_LONG)

 

#4 취약점 예방

변수로 할당!

'Wargame > android' 카테고리의 다른 글

DIVA 6단계  (0) 2024.05.02
DIVA 5단계  (0) 2024.05.02
DIVA 4단계  (0) 2024.05.02
DIVA 3단계  (0) 2024.05.02
DIVA 1단계  (0) 2024.05.01