Dreamhack - rev-basic-1 (리버싱 엔지니어링 기초)

·2025년 7월 2일

Dreamhack-Writeups

목록 보기
10/53
post-thumbnail

rev-basic-1

문제 링크

https://dreamhack.io/wargame/challenges/15

문제 설명

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

드림핵의 rev-basic-0 문제와 매우 유사합니다.
rev-basic-0 문제 풀이 링크 :
https://velog.io/@yunaa/Dreamhack-rev-basic-0-리버스-엔지니어링-기초

풀이과정

  1. 제공된 chall1.exe파일을 실행하면 input : 이라는 문자열이 출력되며 사용자의 입력을 받는 프로그램임을 알 수 있습니다. 플래그 값을 입력하면 "Correct"가 뜨는 구조입니다.

  2. x64dbg을 이용해 chall1.exe 파일을 열어봅니다.

  3. 우클릭 후 다음을 찾기 > 모든 시스템 모듈 > 문자열 참조 을 통해 "Correct" 문자열을 검색합니다.

  4. "Correct" 문자열이 출력되는 코드 근처에서 다음과 같은 흐름을 확인할 수 있습니다.

  • 먼저 사용자에게 input : 을 출력합니다.
  • 이후 사용자의 입력을 [rsp+20] 주소에 저장합니다.
  • 00007FF681ED139E | E8 5DFCFFFF | call chall1.7FF681ED1000 는 검사함수로, 입력을 저장한 [rsp+20]을 검사합니다.
  • 입력값이 플래그 값과 다르다면, 즉 eax == 0 라면 wrong, 같다면 correct을 출력합니다.
  1. 입력한 값이 정답인지 검사하는 함수인 00007FF681ED139E | E8 5DFCFFFF | call chall1.7FF681ED1000 이 핵심함수임을 알 수 있었습니다.
  2. 더블클릭해 그 함수에 들어가 보았습니다. 값을 비교하는 명령어인 cmp 를 통해 플래그로 의심되는 문자를 한 글자씩(C-o-m-p-a-...) 검사함을 확인할 수 있었습니다.
  1. 연결된 문자열을 chall1.exe에 입력해보니 correct 메세지가 출력되어 정상적으로 플래그를 얻어냈습니다.

배운점

  • 기본적인 리버싱에 대해 익힐 수 있었습니다.
  • x64dbg 사용법을 익히고, 디버거를 통해 실제 실행 흐름을 분석할 수 있었습니다.
  • 어셈블리 언어로 입력된 언어를 해석하는 법을 배워볼 수 있었습니다.

Summary (English)

  • The given binary (chall1.exe) prompts the user with input : and verifies the input string.
  • When the correct input is provided, it prints "Correct"; otherwise, "Wrong" is shown.
  • Opened the binary in x64dbg and searched for the "Correct" string using string references.
  • Traced the control flow and found a function call (call chall1.7FF681ED1000) responsible for input validation.
  • Entered the function and observed that it compares each character of the input with specific values using cmp instructions.
  • Identified the flag by reading the characters being compared one by one.
  • Entered the discovered string into chall1.exe and confirmed that "Correct" was printed, meaning the flag was successfully retrieved.
profile
CTF 풀이 및 실습 중심 학습을 기록합니다.

0개의 댓글