ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • note - pwnable.xyz
    Write-ups/pwnable.xyz 2020. 2. 11. 23:29

    Prob Info


    Prob Info
    Checksec

    int __cdecl main(int argc, const char **argv, const char **envp)
    {
      const char *v3; // rdi
      int v4; // eax
    
      setup();
      v3 = "Note taking 101.";
      puts("Note taking 101.");
      while ( 1 )
      {
        while ( 1 )
        {
          while ( 1 )
          {
            print_menu();
            v4 = read_int32(v3);
            if ( v4 != 1 )
              break;
            edit_note();
          }
          if ( v4 != 2 )
            break;
          edit_desc();
        }
        if ( !v4 )
          break;
        v3 = "Invalid";
        puts("Invalid");
      }
      return 0;
    }

     

     

    void edit_note()
    {
          int v0; // ST04_4
          void *buf; // ST08_8
        
          printf("Note len? ");
          v0 = read_int32("Note len? ");
          buf = malloc(v0);
          printf("note: ");
          read(0, buf, v0);
          strncpy(s, (const char *)buf, v0);
          free(buf);
    }
    .bss:0000000000601480                 public s
    .bss:0000000000601480 ; char s[32]
    .bss:0000000000601480 s               db 20h dup(?)           ; DATA XREF: edit_note+67↑o
    .bss:00000000006014A0 ; void *buf
    .bss:00000000006014A0 buf             dq ?                    ; DATA XREF: edit_desc+4↑r
    .bss:00000000006014A0                                         ; edit_desc+1A↑w ...

    힙에 입력한 길이만큼 문자를 받고 s에 strncpy를 이용해 값을 복사한다. 여기서 최대로 복사할 수 있는 값을 우리가 정할 수 있기 때문에 s에서 bof가 일어난다.

     

    ssize_t edit_desc()
    {
          if ( !buf )
            buf = malloc(0x20uLL);
          printf("desc: ");
          return read(0, buf, 0x20uLL);
    }

    edit_desc에서는 buf가 0이 아니면 그 주소에 값을 쓸 수 있는데 buf는 우리가 값으로 수정할 수 있으므로 GOT Overwrite가 가능하다.

    'Write-ups > pwnable.xyz' 카테고리의 다른 글

    two targets - pwnable.xyz  (0) 2020.02.12
    xor - pwnable.xyz  (0) 2020.02.11
    GrownUp - pwnable.xyz  (0) 2020.02.11
    misalignment - pwnable.xyz  (0) 2020.02.11
    add - pwnable.xyz  (0) 2020.02.11

    댓글

Designed by Tistory.