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

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

2019-6-11 14:23
2157

这个程序把输入的序列号跟个性化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$

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

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