본문 바로가기

Reversing/Dreamhack : Reverse Engineering

[Dreamhack] rev-basic-0

 

Reversing Basic Challenge #0

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

해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요!

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

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

 

실행

>> 사용자에게 무자를 입력받고 프로그램 내부의 어떤 검증과정을 거쳐서 입력한 문자열이 검증을 통과하면 Correct, 통과하지 못했다면 Wrong을 출력함

 

정적분석

  1. 바이너리의 아키텍처는 AMD64 (x86-64)
  2. 파일 포맷은 PE (Portable Executable) 구조

 

문자열 검색

 

Wrong / Correct 문자열을 출력하고 있음 > 검색해보기

어떤 입력값을 입력해야 Correct 문자열을 출력하는지 알아내야함

 

 

  • xref를 통해서 문자열이 어떤 함수에서 참조되는지 알 수 있음
  • 다음을 통해 Correct라는 문자열이 main 함수에서 참조되고 있음을 알 수 있음.

 

Decompile

  • sub_140001190 : printf 함수
  • sub_1400011F0 : scanf 함수
  • sub_140001000 : 입력값 검증 함수

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

[Dreamhack] rev-basic-2  (0) 2025.04.21
[Dreamhack] rev-basic-1  (0) 2025.04.21
[Dreamhack] patch  (0) 2025.04.21
IDA  (0) 2025.04.16
Quiz: x86 Assembly 2-3  (0) 2025.04.16