密码学一般分为古典密码学和现代密码学。CTF中脑洞密码提(非现代加密方式)一般都是各种古典密码学的变形。
常见线索
一般情况下,题目中会给出一些线索。比如题目名称 、题目描述等。
例如:题目名称为Base64
例如:题目描述中写了“上面画着一个农妇在栅栏里面喂5只小鸡……”
常见编码
1.Base64/32/16编码
加解密网站:(www.qqxiuzi.cn/bianma/base…)
原理:Base64是用于传输8Bit字节码的编来码方式之一,基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应4个Base64单元,即3个字节可表示4个可打印字符。它可用 来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,共有62个字符。
Base32中只有大写字母(A-Z)和数字234567.
Base16中只有数字0-9以及大写字母ABCDEF.
当看到**==或=*的加密方式时,可以考虑Base64.
2.ASCLL编码
对应表:(ascii.911cha.com/)
例如:突然天上一道雷电gndk€rlqhmtkwwp}z
比较一下“gndk”与“flag”的ASCLL码,
gndk的10进制的ASCII码分别是:103 110 100 107 flag的10进制的ASCII码分别是 :102 108 97 103
发现ASCII以此减少 1 2 3 4,所以以此类推解密得flag{lei_ci_jiami}
3.Morse莫斯密码
加解密网站:(www.jb51.net/tools/morse…)
通过不同的排列顺序来表达不同的英文字母、数字和标点符号。
莫斯密码包括5种状态
a)点(.)
b)划(-)
c)每个字符间短的停顿(再点和划之间的停顿)
d)每个词之间中等的停顿
e)以及句子之间长的停顿
4.Unicode编码
加密解密网站:(tool.chinaz.com/tools/unico…)
原文本:You had me at hello
编码后:\u0059\u006f\u0075\u0020\u0068\u0061\u0064\u0020\u006d\u0065\u0020\u0061\u0074\u0020\u0068\u0065\u006c\u006c\u006f
5.XXencode编码
加解密网站:(web.chacuo.net/charsetxxen…)
原理:XXencode将输入文本以每三个字节为单位进行编码。如果最后剩下的资料少于三个字节,不够的部分用0补齐。这三个字节共有24个bit,以6bit为单位分为4个组,每个组以十进制来表示所出现的数值只会落在0-63之间。以所对应值的位置字符代替。它所选择的可打印字符时:±0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz一共64个字符。与Base64打印字符相比,就是uuencode多一个‘-’字符,少一个‘/’字符。但是,它里面字符顺序与base64完全不一样。
原文本:The quick brown fox jumps over the lazy dog
编码后:hJ4VZ653pOKBf647mPrRi64NjS0-eRKpkQm-jRaJm65FcNG-gMLdt64FjNkc+
6.UUencode编码:
加解密网站:(web.chacuo.net/charsetuuen…)
原文本:You had me at hello
编码后:366]U(&AA9"!M92!A="!H96QL;P``
7.Quoted-printable编码
加解密网站:(www.mxcz.net/tools/Quote…)
原理:在邮件处理的各式编码中,很多编码的目的都是使七位字符的邮件协议体系可以传送八位的二进制文件、双字节语言等等。Quoted-printable也是这样的编码,它的目的时帮助非ASCLL编码的信件传输通过SMTP协议。
Quoted-printable编码是字符对应编码,每个末编码的二进制字符被编码成三个字符,即一个等号和一个十六进制的数字,如“=AB”。
8.URL编码
加解密网站:(tool.chinaz.com/tools/urlen…)
原理:URL地址(常说网址)规定看常用的数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,;@等),剩下的其他所有字符必须通过%xx编码处理。
注意:在CTF Web题目中经常会用到URL编码,比如在URL链接的后面补充一些字段以获取数据库中的信息。
编码后:http%3a%2f%2fwww.mzf.com%2f%3flogin%3d123
9.Escape/Unescape编码
加解密网站:(web.chacuo.net/charsetesca…)
Escape/Unescape加密解码/编码解码,又叫%u编码。Escape编码、加密,就是字符对应UTF-16,16进制表示方式前面%u.Unescape解码/解密,就是去掉%u后,将16进制字符还原。
原文本:你好
编码后:%u4f60%u597d
10.HTML实体编码
11.敲击码
原理:敲击码时一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击的声音来编码而命名,敲击码时基于5×5方格波利比奥斯方阵来实现的,其中,K字母被整合到C中。
敲击表
12.md5加密解密
加解密网站:(www.cmd5.com/)
注:总结内容来自(10条消息) CTF密码学题目初探_wsq柚子的博客-CSDN博客_ctf密码学题目
换位加密
加解密网站:(www.qqxiuzi.cn/bianma/zhal…)
栅栏密码就是把要加密的明文分为N个一组,然后把每组的第一个字符组合,每组的第二个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文,这里以2栏栅栏加密为例。
明文:I love python and ctf
去空格:llovepythonandctf
分组:ll ov ep yt ho na nd ct f
第一组:loeyhnncf
第二组:lvptoadt
密文:loeyhnncflvptoadt\
曲路密码
曲路密码是一种换位密码,需要事先双方约定密钥(也就是曲线路径)。
明文:The quick brown fox jumps over the lazy dog
填入5行7列表(事先约填充的行列数)
加密的回路线(事先约定填充的行列数)
可得密文\
列移位密码
列移位密码是一种比较简单,易于实现的换位密码,通过一个简单的规则则将明文打乱混合成密文。下面我们以明文The quick brown fox jumps over the lazy dog,密钥how are u为例:
(自定义)填入5行7列表(事先约定填充行列数,如果明文不能填充表格可以约定使用某个字母进行填充)
按how are u在字母表中的出现的先后顺序进行编号,我们就有a为1,e为2,h为3,o为4,r为5,u为6,w为7,所以先写出a列,其次e列,以此类推写出的结果便是密文:
密文:qoury inpho Tkool hbxva uwmtd cfseg erjez
替换加密
1.埃特巴什码(Atbash Cipher)
加解密:
埃特巴什码是一种以字母倒序排列作为特殊密钥的替换加密。
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ZYXWVUTSRQPONMLKJIHGFEDCBA
一一对应即可
明文:the quick brown fox jumps over the lazy dog
密文:gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt
2.凯撒密码(Caesar Cipher)
加解密网站:(www.metools.info/code/c70.ht…)
凯撒密码是一种替换加密,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E。
加密实例:
明文:The quick brown fox jumps over the lazy dog
偏移量:1
密文:Uif rvjdl cspxo gpy kvnqt pwfs uif mbaz eph
3.ROT5/13/18/47
加解密网站:(rot13.com/)
ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字。
ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母。
ROT18:它将ROT5和ROT13组合在一起。
ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符。