UNCTF2021-reverse-部分wp

專注的阿熊發表於2021-12-10

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#include <math.h>

```c

int login(void)

{

   double v0; // st7

   signed int v1; // eax

   signed int v2; // ecx

   int v3; // edi

   int v4; // eax

   int v5; // ebx

   int v6; // edi

   char *v7; // edx

   int i; // ecx

   char v9; // al

   float v11; // [esp+10h] [ebp-C8h]

   float v12; // [esp+24h] [ebp-B4h]

   double v13; // [esp+28h] [ebp-B0h]

   double v14; // [esp+30h] [ebp-A8h]

   float v15; // [esp+3Ch] [ebp-9Ch]

   char Text[16]; // [esp+40h] [ebp-98h] BYREF

   char v17[44]; // [esp+50h] [ebp-88h] BYREF

   float v18; // [esp+7Ch] [ebp-5Ch]

   char v19[32]; // [esp+80h] [ebp-58h] BYREF

   char Str[56]; // [esp+A0h] [ebp-38h] BYREF

   system("cls");

   v14 = 1.3;

   v15 = 1.3;

   do

   {

     v13 = -1.2;

     v0 = -1.2;

     do

     {

       v11 = v0 * v0;

       v12 = v15 * v15;

       if ( pow(v12 + v0 * v0 - 1.0, 3.0) - v11 * v15 * v15 * v15 <= 0.0 )

         putchar(42);

       else

         putchar(32);

       v18 = v13 + 0.05;

       v13 = v18;

       v0 = v18;

     }

     while ( v18 <= 1.2 );

     Sleep(0x28u);

     putchar(10);

     v15 = v14 - 0.1;

     v14 = v15;

   }

   while ( v15 >= -1.1 );

   puts("-----Welcome to the landing page-----");

   printf("------Enter your name:");

   scanf("%s", Str);

   printf("------Enter your password:");

   scanf("%s", v19);

   v1 = strlen(Str);

   v2 = 0;

   if ( v1 <= 0 )

   {

LABEL_12:

     v4 = 外匯跟單gendan5.comMessageBoxA(0, "Login Successfully!", "UNCTF2021", 0x24u);

     if ( v4 == 1 || v4 == 6 )

     {

       v5 = 0;

       qmemcpy(v17, "pqsd`fl{zmpZsag}wdYVkUNC", 24);  //flag 對這串字串進行變換得到

       v6 = 0;

       do

       {

         v7 = &v17[v5];

         for ( i = 2; i >= 0; --i )

         {

           v9 = *v7;

           v7 += 8;

           Text[v6++] = v9 ^ 0x16;

         }

         ++v5;

       }

       while ( v5 <= 4 );

       Text[v6] = 0;

       MessageBoxA(0, Text, "UNCTF2021", 0x40u);

     }

   }

   else

   {

     v3 = 0;

     while ( v19[v2] == v3 + Str[v2] )  // 這裡 Str 中是輸入的賬號, v19 是輸入的密碼,要滿足這樣一種關係才能夠登入成功

     {

       ++v2;

       v3 += 2;

       if ( v2 >= v1 )

         goto LABEL_12;

     }

     MessageBoxA(0, "Longin Failed!", "UNCTF2021", 0x40u);

   }

   return system("pause");

}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2846963/,如需轉載,請註明出處,否則將追究法律責任。