小菜鸟一枚 发表于 2020-5-17 14:59

来一个简单的CM,欢迎爆破或追码

今天做了一道CTF,把它算法部分抽出来做了一个简单的CM,欢迎大家尝试!
VS2015静态编译,32位程序,XP可运行。

爆破,追码,逆算法都可以。

成功:会输出源码压缩包密码,能解压源码压缩包。




PS:爆破真的很简单,别想复杂了,追码不知道,没试。

jiaocoll 发表于 2020-5-17 18:07

1.我首先尝试了爆破,然后得到了解压缩包密码








之后进入到源码进行查看,现已把源码进行了修改编译,得到了真正的密码
当然自己对它的源码进行了稍微修改,从而避免了一个打印失败的bug
#include <stdio.h>
#include <string.h>

int main()
{
      //密码表
      int arr = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xCC, 0x3D, 0xCC, 0x9B, 0x33,
                0xC2, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
                0x00, 0x00, 0x7E, 0x7D, 0x7C, 0x7B, 0x7A, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71,
                0x70, 0x6F, 0x6E, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61,
                0x60, 0x5F, 0x5E, 0x5D, 0x5C, 0x5B, 0x5A, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51,
                0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
                0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
                0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21 };

      char ch = {0x44,0x44,0x43,0x54,0x46,0x7B,0x72,0x65,0x76,0x65,0x72,0x73,0x65,0x4D,0x45,0x7D};//密码
      char input = {90,90,91,74,88,35,44,57,40,57,44,43,57,81,89,33};
      for (int i = 0;i<20;i++)//DDCTF{reverseME},逐个比较
      {
                for (int j = 0; j < 126; j++)//查找下标
                {
                        if (arr == ch)//找到下标,替换成ASCII字符
                        {
                              ch = j;
                              break;//开始下一次循环
                        }
                }
      }
      for(int i=0;i<20;i++)
      {
            printf("%d",ch);
      }
      printf("\n");
      if (!strcmp(ch, input))
      {
                printf("you are successful!");
      }
    else
    {
            printf("you have filed!");
    }
return 0;
}


玖公子 发表于 2020-5-17 16:56

细水流长 发表于 2020-5-17 15:24
爆破的确很简单,我想看看源码,密码是什么?

试了试大佬你爆破出来的字符串,成功打开压缩包,密码就是:you are successful!{:301_1008:}
你们好厉害。
#include "main.h"

int main()
{
        //密码表
        int arr = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xCC, 0x3D, 0xCC, 0x9B, 0x33,
                0xC2, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
                0x00, 0x00, 0x7E, 0x7D, 0x7C, 0x7B, 0x7A, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71,
                0x70, 0x6F, 0x6E, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61,
                0x60, 0x5F, 0x5E, 0x5D, 0x5C, 0x5B, 0x5A, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51,
                0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
                0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
                0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21 };

        char ch = "DDCTF{reverseME}";//密码
        char *input = (char *)malloc(sizeof(char) * 20);
        scanf_s("%s", input);

        if (!strlen(input))
        {
                printf("you have filed!");
        }

        for (int i = 0; input != 0;i++)//DDCTF{reverseME},逐个比较
        {
                for (int j = 0; j < 126; j++)//查找下标
                {
                        if (arr == ch)//找到下标,替换成ASCII字符
                        {
                                ch = j;
                                break;//开始下一次循环
                        }
                }
        }
       
        if (!strcmp(ch, input))
        {
                printf("you are successful!");
        }

        printf("you have filed!");

        system("pause");
        return 0;
}

细水流长 发表于 2020-5-17 15:24

1343450392 发表于 2020-5-17 15:45

很激动呀,第一次爆破成功,花了15分钟左右,这个程序不吃断点,0040129D这里跳转未实现改成实现,继续单步到004012FB这里跳转实现改成未实现,即可实现爆破,追码本人不会,我才刚刚学爆破1月左右

iTruth 发表于 2020-5-17 16:23

这CM的解不唯一啊..
试试看这个: ZZ[JX#,9(9,+9QY!

htpidk 发表于 2020-5-17 17:20

本帖最后由 htpidk 于 2020-5-17 17:40 编辑


很早就追到这个码了,只不过用这个密码打不开压缩包,所以以为错了,谁知道你说的会输出密码居然是下面的you are successful!,服了,我说用追到的字符串怎么打不开压缩包。

神之名 发表于 2020-5-18 00:24


这个是哪里有问题?

神之名 发表于 2020-5-18 00:44

htpidk 发表于 2020-5-17 17:20
很早就追到这个码了,只不过用这个密码打不开压缩包,所以以为错了,谁知道你说的会输出密码居然是下面的 ...

你怎么追到的,怎么做的

htpidk 发表于 2020-5-18 02:22

神之名 发表于 2020-5-18 00:44
你怎么追到的,怎么做的

找到接收输入密码的CALL后在下面下个断点,随意输入几个密码,回车后就断下了,下面就是对比输入密码是否正确的代码了,几分钟就可以找到了
页: [1] 2 3
查看完整版本: 来一个简单的CM,欢迎爆破或追码