Hacking/Write Up

[Reversing] Reversing Basic Challenge #0

min_zu 2024. 7. 28. 22:16
728x90
반응형

문제 : https://dreamhack.io/wargame/challenges/14

 

rev-basic-0

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

dreamhack.io

 

Code Analysis

입력해서 correct가 뜨는 문자열을 찾으면 된다

Reversing

IDA로 메인 함수를 보면

int __fastcall main(int argc, const char **argv, const char **envp)
{
  char v4[256]; // [rsp+20h] [rbp-118h] BYREF

  memset(v4, 0, sizeof(v4));
  sub_140001190("Input : ", argv, envp);
  sub_1400011F0("%256s", v4);
  if ( (unsigned int)sub_140001000(v4) )
    puts("Correct");
  else
    puts("Wrong");
  return 0;
}

256바이트 길이의 문자열을 입력받아 v4에 넣고, 이를 sub_140001000함수에 인자로 v4를 넣어서 이게 true가 되면 Correct를 출력함

sub_140001000(a1)

_BOOL8 __fastcall sub_140001000(const char *a1)
{
  return strcmp(a1, "Compar3_the_str1ng") == 0;
}

"Compar3_the_str1ng"와 입력되는 문자열이 같으면 0이므로 같으면 true를 return

 

따라서 플래그가 Compar3_the_str1ng이다

 

728x90
반응형