这篇笔记是我对自己初步学习CTF的一个小总结,主要涉及了Crypto板块的古典密码,这部分内容比较简单,利用一些工具加上观察分析一般都能解决,但是古典密码一般会和编码结合起来一起考察,所以此篇笔记主要起到一个分析总结的作用。
凯撒密码算是古典密码里面非常有名的密码了,相传凯撒大帝曾经使用使用这种密码与下属沟通,所以命名为凯撒密码。其核心逻辑就是将英文字母进行规律替换,在当时那个时代无疑是一种好的加密方式,但是现在看来他是极易被破解的。我们可以也使用词频分析来分析破解(http://quipqiup.com)
接下来我们来看一道例题:
题目:BUUCTF在线评测 (buuoj.cn)
我们下载附件,得到一个文本文件,如下所示:
synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}
我们观察一下,很像我的的flag,但是字母有些不同,经过分析synt,得到这就是移位13的flag,所以我们使用在线工具,将位移设置成13,得到结果:
flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}
摩斯密码我们大家也熟悉,就是我们的电报。他的核心特点就是有两种不同的元素(不一定是.-,还可能是01,AB之类的)和间隔(空格或者/),当我们看到上面特征时,就可以考虑摩斯密码了。
题目:BUUCTF在线评测 (buuoj.cn)
打开附件得到一串点横,然后有空格隔开,大概率为摩斯密码。
… .-… — …- . -.-- — …-
解码结果如下所示:
ILOVEYOU
维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。可以用来防止词频攻击。
接下来我们看一道题目,来加强一下认知:
题目:[AFCTF 2018]Vigenère | NSSCTF
我们可以看到附件中有这样一串字母以及代码,明显就是我们需要的flag:
Zy daf sjle Wafyyo drvnvdrtv gh dif Crtl nrqfy boe zqm trtwjy kf gnnqr blhawas, ntm bhr gogojt ntm xalsgfn kf gnnqr fgnsleef.
luig vy cxwpf{Jnxwobuqg_O_Cogiqi!}
#include
#include
#include
int main()
{
freopen("flag.txt","r",stdin);
freopen("flag_encode.txt","w",stdout);
char key[] = /*SADLY SAYING! Key is eaten by Monster!*/;
int len = strlen(key);
char ch;
int index = 0;
while((ch = getchar()) != EOF){
if(ch>='a'&&ch<='z'){
putchar((ch-'a'+key[index%len]-'a')%26+'a');
++index;
}else if(ch>='A'&&ch<='Z'){
putchar((ch-'A'+key[index%len]-'a')%26+'A');
++index;
}else{
putchar(ch);
}
}
return 0;
分析代码可知是维吉尼亚密码,如果我们知道密钥,也就好解决了,但是目前没有给我们,所以我们采用暴力破解的办法(Vigenere Solver | guballa.de),最终能得到结果:
flag is afctf{Whooooooo_U_Gotcha!}
这便是我们需要的flag。
栅栏密码就是把要加密的明文分成N个一组,然后把每组的第一位、第二位…分别提取出来拼接在一起。解密的话,就逆操作即可。
题目:BUUCTF在线评测 (buuoj.cn)
打开附件,得到如下信息:
felhaagv{ewtehtehfilnakgw}
我们简单分析一下前面8个字母,发现两个一组能拼出flag,所以应该是两个字母一组,可以自己分析,也可以利用工具](https://www.qqxiuzi.cn/bianma/zhalanmima.php)分析,结果如下所示。
flag{wethinkwehavetheflag}
栅栏密码就是把要加密的明文分成N个一组,然后把每组的第一位、第二位…分别提取出来拼接在一起。解密的话,就逆操作即可。
题目:BUUCTF在线评测 (buuoj.cn)
打开附件,得到如下信息:
felhaagv{ewtehtehfilnakgw}
我们简单分析一下前面8个字母,发现两个一组能拼出flag,所以应该是两个字母一组,可以自己分析,也可以利用工具](https://www.qqxiuzi.cn/bianma/zhalanmima.php)分析,结果如下所示。
flag{wethinkwehavetheflag}
猪圈密码(Pigpen cipher,亦称朱高密码、共济会密码)是一种以格子为基础的简单替代式密码。即使使用符号,也不会影[密码分析,亦可用在其它替代式的方法。
CTF中的古典密码远远不止这些,不够现在一般都是现代密码偏多。我会在接下来的学习中不断补充,同时也希望我能一直坚持下去。