본문 바로가기

Reversing/Dreamhack : Reverse Engineering

[Dreamhack] rev-basic-1

Reversing Basic Challenge #1

이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다.

해당 바이너리를 분석하여 correct를 출력하는 입력값을 알아내세요.

획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요.

예시) 입력 값이 Apple_Banana일 경우 flag는 DH{Apple_Banana}

  • 이름 재설정(n): 함수, 변수의 이름을 변경합니다.
  • 숫자-문자 아스키코드 변환(r): 아스키코드 테이블에 따라 숫자는 문자로, 문자는 숫자로 변환합니다.

 

main 함수 찾기

  • 컴파일러 별 main 함수를 호출 하는 패턴이 일정하기 때문에 IDA가 main함수를 자동으로 찾을 수 있음
  • rev-basic-1 문제 파일 경우 Visual Studio를 사용해 컴파일이 되었다
  • IDA는 Visual Studio가 main 함수를 호출하는 패턴을 알고 있기 때문에 main 함수를 바로 찾을 수 있음

 

main 함수 분석

 

  • sub_1400013E0, sub_140001440
    - 용도를 알아낸 함수는 이름을 바꿔주는 것이 분석하기에 편함

 

  • sub_140001440


- IDA에서 숫자를 문자로 변환하는 단축키는 ‘r’

 

- 문자열의 끝은 NULL 문자로 0을 의미하기 때문에 마지막에 비교하는 0은 직접 입력하지 않아도 자동으로 들어가 함수의 조건을 모두 만족

'Reversing > Dreamhack : Reverse Engineering' 카테고리의 다른 글

[Dreamhack] rev-basic-3  (0) 2025.04.21
[Dreamhack] rev-basic-2  (0) 2025.04.21
[Dreamhack] rev-basic-0  (0) 2025.04.21
[Dreamhack] patch  (0) 2025.04.21
IDA  (0) 2025.04.16