<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【為美好CTF獻上祝福】 ISCTF2024 逆向筆記

      很顯然,我并沒有參加ISCTF2024,去網上找套ISCTF2024的題,解壓出來發下只缺了Re的題。東拼西湊找到的這些題,所以題目順序包不是對的。

      MIPS

      題目提示:MIPS指令集編譯為可執行文件即可正常分析,魔改RC4

      知識盲區了。

      根據新生賽的教訓,先bdfs一下題目名字。

      MIPS 是一種CPU性能指標?

      MIPS架構。。。?

      先放過這個題等等再回來做。

      桀桀桀

      抽象題目。

      扔進ida后看到一堆函數,直接 shift+F12 查字符串。 果然一堆互動。

      屏幕截圖 2025-11-05 102627

      有理由懷疑這題是比賽的前幾道題,根據字符串追蹤到主函數。

      稍微改改變量名,得到如下代碼:

      點擊查看代碼
      __int64 sub_411E40()
      {
        int v0; // edx
        __int64 v2; // [esp-8h] [ebp-17Ch]
        char v3; // [esp+0h] [ebp-174h]
        char v4; // [esp+0h] [ebp-174h]
        int i; // [esp+D0h] [ebp-A4h]
        int j; // [esp+D0h] [ebp-A4h]
        size_t k; // [esp+D0h] [ebp-A4h]
        unsigned int Seed; // [esp+F4h] [ebp-80h]
        int v9; // [esp+100h] [ebp-74h]
        char a[4]; // [esp+10Ch] [ebp-68h] BYREF
        __int16 v11; // [esp+110h] [ebp-64h]
        char Str[4]; // [esp+11Ch] [ebp-58h] BYREF
        int v13; // [esp+120h] [ebp-54h]
        int v14; // [esp+124h] [ebp-50h]
        int v15; // [esp+128h] [ebp-4Ch]
        int v16; // [esp+12Ch] [ebp-48h]
        int v17; // [esp+130h] [ebp-44h]
        int v18; // [esp+134h] [ebp-40h]
        int v19; // [esp+138h] [ebp-3Ch]
        char v20; // [esp+13Ch] [ebp-38h]
        _DWORD v21[10]; // [esp+148h] [ebp-2Ch]
        int savedregs; // [esp+174h] [ebp+0h] BYREF
      
        sub_411357(&unk_41D0A5);
        v21[0] = 2063192753;
        v21[1] = 592530563;
        v21[2] = -1096176201;
        v21[3] = 371522280;
        v21[4] = -683475309;
        v21[5] = -145612880;
        v21[6] = -394232486;
        v21[7] = 1866595368;
        v21[8] = 0;
        *(_DWORD *)Str = 0;
        v13 = 0;
        v14 = 0;
        v15 = 0;
        v16 = 0;
        v17 = 0;
        v18 = 0;
        v19 = 0;
        v20 = 0;
        *(_DWORD *)a = 0;
        v11 = 0;
        Seed = 0;
        puts("Hello Ctfer~~~~");
        putchar();
        puts("Welcome to ISCTF 2024!!!");
        putchar();
        puts("This is a easy challenge");
        putchar();
        puts("Just do it");
        putchar();
        puts("Now!Please send me what you think is the solution to the equation below.");
        putchar();
        scanf("%5s", (char)a);
        if ( (a[1] * a[0]) << 10 == 6204416
          && (a[1] + 1) * (a[1] - 1) == 6888
          && a[2] + a[3] == 151
          && (a[2] << 11) - a[3] == 137132
          && a[3] + a[2] + a[1] + a[0] + (char)v11 == 377 )
        {
          puts("Yeah Yeah Yeah");
          putchar();
          puts("You are a qualified college student");
          putchar();
          puts("Something has changed........");
          putchar();
          for ( i = 0; i < 5; ++i )
            Seed += a[i] ^ 0xA1;
          sub_4110E1("Now,Give me what you think is right:", v3);
          scanf("%32s", (char)Str);
          j_strlen(Str);
          for ( j = 0; j < 4; ++j )
            sub_4111B3(&Str[8 * j], &dword_41B000);
          srand(Seed);
          putchar();
          rand();
          v9 = putchar();
          sub_41128A(Str, v9);
          for ( k = 0; k < j_strlen(Str) >> 2; ++k )
          {
            if ( !sub_41100A(*(_DWORD *)&Str[4 * k], v21[k]) )
            {
              sub_4110E1("Emmmmmm,It is not right........see you again~~~", v4);
              goto LABEL_19;
            }
          }
          puts("Good!!!");
          putchar();
          puts("Man! You've completed the challenge");
          putchar();
          puts("Welcome again to ISCTF2024");
          putchar();
        }
        else
        {
          puts("Nononononono~~~");
          putchar();
          puts("You look like something is wrong");
          putchar();
        }
      LABEL_19:
        sub_411203(&savedregs, &dword_4122DC, 0, v0);
        return v2;
      }
      
      
      

      a 是個長度為 5 的字符串。(合理猜測是 ISCTF )

      發現他讓我們先解方程求出 a 。

      屏幕截圖 2025-11-05 102844

      (a[1]+1)*(a[1]-1) == 6888 ---->  a[1] == 83   ---> a[1] 為 S
      
      (a[1] *a[0]) <<10 == 6204416   -----> a[0]==73 ---> a[0] 為 I
      
      還有 a[2],a[3] 的初中二元一次方程組,阿巴阿巴阿巴。
      
      a[2] = 67 -----> C
      
      a[3] = 84 ----T
      
      V11=70  ----- > F
      
      所以 a 為 ISCTF
      

      接著計算 seed

      屏幕截圖 2025-11-05 115149

      支持C++腳本喵

      點擊查看代碼
      #include<bits/stdc++.h>
      using namespace std;
      int a[5]={73,83,67,84,70}; 
      signed main(){
          int seed=0;
      	for (int i=0;i<5;++i) {
      		seed+=a[i] ^ 0xA1 ;
      	} 
      	cout<<seed;
      	return 0;
      } 
      

      seed == 1176

      再往后看,重頭戲來了,核心的加密部分。

      屏幕截圖 2025-11-05 115313

      先讓我們輸入一個長度為 32 的字符串 str
      然后

      for ( j = 0; j < 4; ++j )
        sub_4111B3(&Str[8 * j], &dword_41B000);`
      

      合理猜測這個函數是初始化。因為點進去看到的是這個。

      屏幕截圖 2025-11-05 115620

      再往后看。

      屏幕截圖 2025-11-05 165314

      這個函數,點進去后發現這函數是判斷相等的。

      屏幕截圖 2025-11-05 165449

      posted @ 2025-11-04 16:42  int_Hello_world  閱讀(5)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产成人a∨激情视频厨房| 无套内谢少妇高清毛片| 四虎在线播放亚洲成人| 国产精品小一区二区三区| 精品国产中文字幕av| 久久天天躁狠狠躁夜夜婷| bt天堂新版中文在线| 欧美人禽zozo动人物杂交| 女人扒开的小泬高潮喷小| 天天躁日日躁狠狠躁一区| 99久久亚洲综合精品成人网| 1区2区3区4区产品不卡码网站| 少妇精品导航| 亚洲国产精品日韩av专区| 中文字幕日韩有码av| 久久九九久精品国产免费直播| 四虎成人高清永久免费看| 可以在线观看的亚洲视频| 国产xxxx做受视频| 免费无码av片在线观看网站| 久热伊人精品国产中文| 午夜成人鲁丝片午夜精品| 国产国产人免费人成免费| 好爽好紧好大的免费视频| 午夜成人精品福利网站在线观看| 色噜噜一区二区三区| 日韩一本不卡一区二区三区| 亚洲精品漫画一二三区 | 露脸叫床粗话东北少妇| 午夜精品一区二区三区成人| 给我免费观看片在线| 水蜜桃av无码| 亚洲精品一区二区动漫| 中文字幕亚洲综合久久| 亚洲日本高清一区二区三区| 精品国产一区av天美传媒| 人人玩人人添人人澡超碰| 综合在线 亚洲 成人 欧美 | 国产精品视频午夜福利| 国产久爱免费精品视频| 亚洲国产成人久久一区久久|