首页
论坛
课程
招聘
[原创]CTF2019Q2第六题:消失的岛屿
2019-6-11 14:23 926

[原创]CTF2019Q2第六题:消失的岛屿

2019-6-11 14:23
926

这个程序把输入的序列号跟个性化base64编码后又加密处理的字符串!NGV%,$h1f4S3%2P(hkQ94==比较,相同才是正确的序列号。

 

图片描述

 

根据加密代码,写出一个解密的代码

#include <stdio.h>
int main()
{
        int i;
        for(i='A';i<='Z';i++)
                printf("%c",0x9b-i);
        for(i='a';i<='z';i++)
                printf("%c",i-0x40);
        for(i=0x30;i<=0x39;i++)
                printf("%c",i+'2');
        printf("wy\n");

        return 0;
}

加密前后的64个字符

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
ZYXWVUTSRQPONMLKJIHGFEDCBA!"#$%&'()*+,-./0123456789:bcdefghijkwy

 

解密!NGV%,$h1f4S3%2P(hkQ94得到aMTEeld6q4tHserKh69Jyt

#include <stdio.h>
#include <string.h>

int main()
{
        char enc[25]="aMTEeld6q4tHserKh69Jyt";
        char b64m[65]="tuvwxTUlmnopqrs7YZabcdefghij8yz0123456VWXkABCDEFGHIJKLMNOPQRS9+/";
        char b64[65]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
        int i, j;
        for(i=0;i<=22;i++)
        {
               for(j=0;j<=64;j++)
               {
                       if(enc[i]==b64m[j])
                       {
                               printf("%c",b64[j]);
                j = 80;
                       }
               } 
        }
        printf("==\n");
        return 0;

}

获取其标准base64编码,得到S2FuWHVlMjAxOWN0Zl9zdA==

 

执行下面的命令,获得序列号

$ echo S2FuWHVlMjAxOWN0Zl9zdA== | base64 -d
KanXue2019ctf_st$

[看雪官方培训] Unicorn Trace还原Ollvm算法!《安卓高级研修班》2021年6月班开始招生!!

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回