Dreamhack-rev-basic-2 문제 풀이

Posted by : at

Category : reversing



0. 메타데이터 확인

/assets/img/posts/2024-12-01-rev-basic-2/Untitled.png


PE64, 아마 패킹은 안됐을 듯

C 언어로 작성된 프로그램


1. 행위 파악


Input을 받는다. 콘솔에서 사용자 입력을 받기 때문에 stdin과 상호작용할 듯?


2. 정적 분석


/assets/img/posts/2024-12-01-rev-basic-2/Untitled_1.png


sub_140001210 에서는 아마 사용자 입력을 받을 것이다

확인해 보니 맞다

그럼 Correct는 어떻게 해야 출력될지 확인해 보자.


2.1. sub_140001000(user_input)


/assets/img/posts/2024-12-01-rev-basic-2/Untitled_2.png


위 식을 가독성 좋게 정리하면 아래와 같다.

__int64 __fastcall sub_140001000(char *usr_input){  int i; // [rsp+0h] [rbp-18h]  for ( i = 0; (unsigned __int64)i < 0x12; ++i )  {    if ( *(_DWORD *)&stored_data[4 * i] != (unsigned __int8)usr_input[i] )      return 0i64;  }  return 1i64;}


stored_data는 2차원 배열로, 아래와 같은 값을 가진다.

/assets/img/posts/2024-12-01-rev-basic-2/Untitled_3.png


추가적인 연산을 할 필요 없이, 하드코딩된 데이터가 키값이기 때문에

DH{Comp4re_the_arr4y}가 정답.

/assets/img/posts/2024-12-01-rev-basic-2/Untitled_4.png



About TouBVA
TouBVA

A Security Researcher, now concentrating on Security Consulting.

Email : touBVa@gmail.com

Website : https://toubva.github.io