ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SECUINSIDE 2016 CYKOR_00002_patch
    CTF 2016. 7. 11. 01:28
    int sub_8048F50()
    {
      char v1; // [sp+70h] [bp-448h]@1
      char v2; // [sp+B0h] [bp-408h]@3
      char v3; // [sp+B1h] [bp-407h]@4
      int v4; // [sp+4B0h] [bp-8h]@1
    
      v4 = 0;
      printf("----------------------------------------\n");
      printf("-          Simple Echo System          -\n");
      printf("----------------------------------------\n");
      printf("What is your name?\n");
      inputname((int)&v1);
      if ( !strncmp((int)&v1, (int)"ADMIN", 5u) )
      {
        printf("+ Gimme a key : ");
        read((int)&byte_805F454, 0x1Bu, 10);
        if ( key() )
        {
          printf("Welcome Admin :)\n");
          printf(": ");
          read((int)&v2, 0x3E8u, 10);
          if ( v2 == 67 && v3 == 75 )
            v0 = 10;
          printf("%s\n");
        }
        else
        {
          printf("Get out of here :(\n");
        }
      }
      else
      {
        printf("Hi %s\n");
        printf(": ");
        *(&v2 + read((int)&v2, 0x3E8u, 10)) = 0;
        printf("%s\n");
      }
      return 0;
    }



    IDA rename 기능을 사용하여 복원한 코드이다.


    name은 ADMIN이 되어야하고, Key를 27바이트만큼 입력받는데, key() 함수에서 연산을하게된다.


    key는 z3를 통해서 구해주면 SHOW_ME_THE_M0N3Y_TURN_UP 이러한 문자열이 나오게된다.


    그럼 맞춰주고, 핵심은 v2 == 67 && v3 == 75 이다.


       0x80490e3: movl   $0x0,-0x454(%ebp)

       0x80490ed: mov    -0x454(%ebp),%eax // segmentation fault

    => 0x80490f3: movb   $0xa,(%eax)








    패치는, 저 CK를 바꿔주면되겠다, C = 67,(0x43) K = 75(0x4b), 00으로 수정해준다.


    cykor_00002_pathch.py



    'CTF' 카테고리의 다른 글

    TJCTF onshot  (0) 2016.07.12
    SECUINSDIE 2016 noted  (0) 2016.07.11
    SECUINSIDE 2016 CYKOR_00001  (0) 2016.07.10
    SECUINSIDE 2016 CYKOR_00001_Patch  (0) 2016.07.10
    Backdoor CTF - Enter the Matrix  (0) 2016.06.07

    댓글

Designed by Tistory.