• 攻防世界--Hello, CTF


    测试文件地址:https://www.lanzous.com/i5ot1yd

     使用IDA1打开

    打开之后,这个字符串和第一题的有些类似,拿去转换一下,Flag就得到了

    CrackMeJustForFun

    也可以对伪代码进行分析

     1 int __cdecl main(int argc, const char **argv, const char **envp)
     2 {
     3   signed int v3; // ebx
     4   char v4; // al
     5   int result; // eax
     6   int v6; // [esp+0h] [ebp-70h]
     7   int v7; // [esp+0h] [ebp-70h]
     8   char v8; // [esp+12h] [ebp-5Eh]
     9   char v9[20]; // [esp+14h] [ebp-5Ch]
    10   char v10; // [esp+28h] [ebp-48h]
    11   __int16 v11; // [esp+48h] [ebp-28h]
    12   char v12; // [esp+4Ah] [ebp-26h]
    13   char v13; // [esp+4Ch] [ebp-24h]
    14 
    15   strcpy(&v13, "437261636b4d654a757374466f7246756e");
    16   while ( 1 )
    17   {
    18     memset(&v10, 0, 0x20u);
    19     v11 = 0;
    20     v12 = 0;
    21     sub_40134B(aPleaseInputYou, v6);
    22     scanf(aS, v9);
    23     if ( strlen(v9) > 0x11 )
    24       break;
    25     v3 = 0;
    26     do
    27     {
    28       v4 = v9[v3];
    29       if ( !v4 )
    30         break;
    31       sprintf(&v8, asc_408044, v4);
    32       strcat(&v10, &v8);
    33       ++v3;
    34     }
    35     while ( v3 < 17 );
    36     if ( !strcmp(&v10, &v13) )
    37       sub_40134B(aSuccess, v7);
    38     else
    39       sub_40134B(aWrong, v7);
    40   }
    41   sub_40134B(aWrong, v7);
    42   result = stru_408090._cnt-- - 1;
    43   if ( stru_408090._cnt < 0 )
    44     return _filbuf(&stru_408090);
    45   ++stru_408090._ptr;
    46   return result;
    47 }

    第36~39行代码是判断输入字符串和right serial是否匹配,通过第15行代码,我们知道v13就是right serial,将初始化v13的十六进制转换为字符串即可。

  • 相关阅读:
    实现一个简易的Spring MVC
    解决IntelIij DEA控制台乱码
    01、SpringBoot中关于tomcat的一些常用配置
    Java动态代理的简单实现
    MVVM中viewmodel的理解
    eclipse常用快捷键
    导入mysql报错问题
    mysql主从配置思路
    rpm安装jdk7
    13个开源GIS软件 你了解几个?
  • 原文地址:https://www.cnblogs.com/Mayfly-nymph/p/11386298.html
Copyright © 2020-2023  润新知