NOT4DOG
방명록 RSS 태그 글쓰기 관리자
 
[CTF] Dreamhack rev-basic-0 문제 Write-up
CTF Write-up 2021-12-29 17:15:42

반응형

문제) Reversing Basic Challenge #0

       이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여

       correct 또는 wrong을 출력하는 프로그램이 주어집니다.

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

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

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

 

chall0.exe 파일을 제공한다.

input을 받고 input 값과 chall0.exe 에 저장된 값이 같다면 FLAG를 확인할 수 있다.

리버스 엔지니어링을 위해  IDA를 사용하였다.

 

main 함수

먼저 main 함수를 보게되면, 전형적인 strcmp 형식 프로그램이며,

비교할 값이 sub_140001000 함수에 있음을 확인할 수 있다.

sub_140001000 함수

sub_140001000 함수의 로직을 확인하면, lea로 Str2에 있는 내용을 rdx에 load하여 비교 후

그 비교값이 True면 '"Correct", False면 "Wrong"를 반환한다.

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

sub_140001000 함수의 call부분을 code 로 확인하면, FLAG를 획득할 수 있다.

반응형