BUUCTF - [BJDCTF2020]簡単

テストファイル:https://www.lanzous.com/ib50fkb

 

ファイル解析

IDA開いた後、ファンクションウィンドウの内部でQUESを見つける()関数は、私たちのフラグの出力です。デバッグEIPアドレスを変更することで、我々はQUES機能に行くことができます(0x00401520)フラグ出力

int型QUES()
{ 
  int型 V0。// EDX 
  int型の結果。// EAX 
  int型 V2 [ 50 ]。// [ESP + 20H] [EBP-128H] 
  int型 v3の。// [ESP + E8H] [EBP-60H] 
  INT V4。// [ESP + ECH] [EBP-5CH] 
  int型 V5。// [ESP + F0H] [EBP-58H] 
  int型 V6。// [ESP + F4H] [EBP-54H] 
  int型 V7。// [ESP + F8H] [EBP-50H] 
  int型 V8。// [ESP + FCH] [EBP-4Chの] 
  int型 V9。//[ESP + 100H] [EBP-48] 
  のint V10。// [ESP + 104H] [EBP-44H] 
  int型の V11; // [ESP + 108H] [EBP-40H] 
  int型の V12; // [ESP + 10CH] [EBP-3CH] 
  のint jを; // [ESP + 114H] [EBP-34H] 
  __int64 V14。// [ESP + 118H] [EBP-30H] 
  int型の V15; // [ESP + 124H] [EBP-24時間] 
  int型の V16; // [ESP + 128H] [EBP-20H] 
  int型 I; // [ESP + 12CH] [EBP-代一〕

  V3 = 2147122737 
  V4 = 140540 ; 
  V5= - 2008399303 ; 
  V6 = 141956 ; 
  V7 = 139457077 ; 
  V8 = 262023 ; 
  V9 = - 2008923597 ; 
  V10 = 143749 ; 
  V11 = 2118271985 ; 
  V12 = 143868 ;
  以下のための(iは= 0 ; I <= 4 ; ++ I)
  { 
    memsetの(V2、0はsizeof (V2))。
    V16 = 0 ; 
    V15= 0 ; 
    V0 = *(&V4 + 2 * I)。
    LODWORD(V14) = *(&V3 + 2 * I)。
    HIDWORD(V14) = V0。
    一方、(SHIDWORD(V14)> 0 || V14> = 0 && (_DWORD)V14)
    { 
      V2 [V16 ++] =((SHIDWORD(V14)>> 31)^(((符号なし__int8)(SHIDWORD(V14) >> 31)^ (符号なし__int8)V14)
                                           - (符号なし__int8)(SHIDWORD(V14)>> 31)) - 1 - (SHIDWORD(V14)>> 31 )。
      V14 / = 2LL。
    } 
    ため(J = 50 ; J> = 0 ; - J)
    { 
      場合(V2 [J])
      { 
        場合(V2 [J] == 1 
        { 
          のputchar(42 )。
          ++ V15; 
        } 
      } 
      
      { 
        のputchar(32 )。
        ++ V15; 
      } 
      もし(!(V15%5 ))
        のputchar(32); 
    } 
    結果 =のputchar(10 )。
  } 
  戻り値の結果; 
}

 

フラグを取得します!

フラグ{HACKIT4FUN}

おすすめ

転載: www.cnblogs.com/Mayfly-nymph/p/12664153.html