CTF密码学题目初探

CTF密码学题目初探(一)

密码学总结(一)

密码学一般可分为 古典密码学现代密码学。CTF中脑洞密码题(非现代加密方式)一般都是各种古典密码的变形。

1.常见线索

一般情况下,题目中会给出一些线索。比如题目名称题目描述等。
举例:题目名称为base64
题目链接
CTF密码学题目初探
举例:题目描述中写了“上面画着一个农妇在栅栏里面喂5只小鸡”…
题目链接CTF密码学题目初探

2.常见编码

  1. base64/32/16编码
    加密解密网站链接
    原理: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. ASCII编码
    ASCII对照表
    举例:突然天上一道雷电gndk€rlqhmtkwwp}z
    比较一下"gndk"与"flag"的ASCII码,
    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莫斯密码
    通过不同的排列顺序来表达不同的英文字母、数字和标点符号。
    莫斯密码翻译器
    莫斯密码包括5中状态
    1.点(.)
    2.划(-)
    3.每个字符间短的停顿(在点和划之间的停顿)
    4.每个词之间中等的停顿
    5.以及句子之间长的停顿
    CTF密码学题目初探11 111 010 000 0 1010 111 100 0 00 000 000 111 00 10 1 0 010 0 000 1 00 10 110
    (这里只用 0和1,所以应该是用01代替.、-。 那么到底是用1代表.还是用0代表.呢? 都试一下)

  4. Unicode编码
    Unicode在线编码解码链接
    原文本: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编码
    XXencode在线编码解码
    原理:原理:XXencode将输入文本以每三个字节为单位进行编码。如果最后剩下的资料少于三个字节,不够的部分用零补齐。这三个字节共有24个bit,以6bit为单位分为4个组,每个组以十进制来表示所出现的数值只会落在0-63之间。以所对应值的位置字符代替。它所选择的可打印字符是:±0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,一共64个字符。跟base64打印字符相比,就是uuencode多一个‘-’字符,少一个‘/’字符。但是,它里面字符顺序与base64完全不一样。
    (原文链接:https://blog.****.net/pdsu161530247/article/details/75667218)
    原文本:The quick brown fox jumps over the lazy dog
    编码后:hJ4VZ653pOKBf647mPrRi64NjS0-eRKpkQm-jRaJm65FcNG-gMLdt64FjNkc+

  6. UUencode编码
    UUencode在线编码解码
    原文本:You had me at hello
    编码后:366]U(&AA9"!M92!A="!H96QL;P``

  7. Quoted-printable编码解码
    编码解码链接
    原理:在邮件处理的各式编码中,很多编码的目的都是使七位字符的邮件协议体系可以传送八位的二进制文件、双字节语言等等。Quoted-Printable也是这样的编码,它的目的是帮助非ASCII编码的信件传输通过SMTP协议。
    Quoted-Printable编码是字符对应的编码,每个末编码的二进制字符被编码成三个字符,即一个等号和一个十六进制的数字,如"=AB"
    CTF密码学题目初探

  8. URL编码
    url在线编码解码链接
    原理:URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。
    注意:在CTF WEB题目中经常会用到URL编码,比如在url链接的后面补充一些字段以获取数据库中的信息。
    原链接:http://www.mzf.com/?login=123
    编码后:http%3a%2f%2fwww.mzf.com%2f%3flogin%3d123

  9. Escape/Unescape编码
    Escape/Unescape在线编码解码链接
    Escape/Unescape加密解码/编码解码,又叫%u编码。Escape编码/加密,就是字符对应UTF-16 ,16进制表示方式前面加%u。Unescape解码/解密,就是去掉"%u"后,将16进制字符还原。
    原文本:你好
    编码后:%u4f60%u597d

  10. HTML实体编码
    HTML在线编码解码链接
    HTML ISO-8859-1 参考手册

  11. 敲击码
    原理:敲击码(Tap code)是一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基于5×5方格波利比奥斯方阵来实现的,其中,K字母被整合到C中。
    敲击码表:CTF密码学题目初探
    CTF密码学题目初探

  12. md5加密解密
    MD5加密解密

密文类型 举例格式 说明
md5 e10adc3949ba59abbe56e057f20f883e 49ba59abbe56e057 标准md5,32位或16位
md5(md5($pass)) b80c9c5f86de74f0090fc1a88b27ef34 第一次加密后,结果转换成小写,对结果再加密一次
md5(md5(md5($pass))) e57941ff9000aedb44eb2fa13f6e3e3c 第一次加密后,结果转换成小写,对结果再加密一次,结果转换成小写,对结果再加密一次
MD5(MD5($pass)) bb7ff6177ee612ef9dc6acd3a9ea7ea9 第一次加密后,结果转换成大写,对结果再加密一次
MD5(MD5(MD5($pass))) 36d627bd562e83ab995fb1fdf59c95d9 第一次加密后,结果转换成大写,对结果再加密一次,结果转换成大写,对结果再加密一次
sha1 f03e8a370aa8dc80f63a6d67401a692ae72fa530 密文长度必须为40位
md4 c0a27f801162b8b862cd5f5a1a66e85a 32位
mysql 29596332026fd206 老MYSQL数据库用的,16位,且第1位和第7位必须为0-8
mysql5 b34c662f720236babfc1b3f75203a80e1009844a 新版本MySql数据库用的
md5(pass.pass.salt) 9393dc56f0c683b7bba9b3751d0f6a46:OTD6v4c8I3Zid2AL 在密码后附加一个字符串再加密
md5(salt.salt.pass) 5610604c157ef1d0fb33911542e5b06f:zg 在密码前附加一个字符串再加密