ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • sub - pwnable.xyz
    Write-ups/pwnable.xyz 2019. 10. 21. 02:45

    Prob Info


    Prob Info
    Checksec

     

    __int64 __fastcall main(__int64 a1, char **a2, char **a3)
    {
      int v4; // [rsp+0h] [rbp-18h]
      int v5; // [rsp+4h] [rbp-14h]
      unsigned __int64 v6; // [rsp+8h] [rbp-10h]
    
      v6 = __readfsqword(0x28u);
      sub_A3E(a1, a2, a3);
      v4 = 0;
      v5 = 0;
      _printf_chk(1LL, "1337 input: ");
      _isoc99_scanf("%u %u", &v4, &v5);
      if ( v4 <= 4918 && v5 <= 4918 )
      {
        if ( v4 - v5 == 4919 )
          system("cat /flag");
      }
      else
      {
        puts("Sowwy");
      }
      return 0LL;
    }

     

    v4v5를 비교해 둘 다 4918보다 작고 두개를 빼서 4919가 나오면 플래그를 준다. 이런 문제는 어셈블리어로 다시 확인해야한다.

    .text:00000000000008A1                 mov     eax, [rsp+18h+var_18]
    .text:00000000000008A4                 cmp     eax, 1336h
    .text:00000000000008A9                 jg      short loc_8B7
    .text:00000000000008AB                 mov     edx, [rsp+18h+var_14]
    .text:00000000000008AF                 cmp     edx, 1336h
    .text:00000000000008B5                 jle     short loc_8C5
    .text:00000000000008C5 loc_8C5:                                ; CODE XREF: main+65↑j
    .text:00000000000008C5                 sub     eax, edx
    .text:00000000000008C7                 cmp     eax, 1337h
    .text:00000000000008CC                 jnz     short loc_8DA
    .text:00000000000008CE                 lea     rdi, command    ; "cat /flag"
    .text:00000000000008D5                 call    system

    sub를 할 때 음수가 나와도 비교를 할 때는 의미가 없어진다. 반대로 두 값 모두 음수를 넣어도 된다.

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

    note - 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
    Welcome - pwnable.xyz  (0) 2019.10.11

    댓글

Designed by Tistory.