File

    ubuntu@29c7cfc91700:~/CTF/reversing.kr$ file Easy_ELF
    Easy_ELF: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.15, BuildID[sha1]=8edb9e400a3882319cd4582f89dd2373b7e1745c, stripped

    32비트 리눅스용 실행파일 하나.

    Decompile

    main

    int __cdecl main()
    {
      write(1, "Reversing.Kr Easy ELF\n\n", 0x17u);
      sub_8048434();  //__isoc99_scanf(&unk_8048650, &byte_804A020);
      if ( sub_8048451() )
        sub_80484F7();  //write(1, "Correct!\n", 9u);
      else
        write(1, "Wrong\n", 6u);
      return 0;
    }

    sub_8048451() 함수에서 true를 반환시켜야 된다.

    sub_8048451

    _BOOL4 sub_8048451()
    {
      if ( byte_804A021 != '1' )
        return 0;
      byte_804A020 ^= 0x34u;
      byte_804A022 ^= 0x32u;
      byte_804A023 ^= 0x88u;
      if ( byte_804A024 != 'X' )
        return 0;
      if ( byte_804A025 )
        return 0;
      if ( byte_804A022 != 124 )
        return 0;
      if ( byte_804A020 == 120 )
        return byte_804A023 == 0xDDu;
      return 0;
    }

    일부 문자는 XOR 연산하고 각각의 문자를 확인한다.

    Solution

    자세한 설명은 생략한다..

    ubuntu@29c7cfc91700:~/CTF/reversing.kr$ ./Easy_ELF 
    Reversing.Kr Easy ELF
    
    L1NUX
    Correct!

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다