CTF训练

CTF常见加密方式汇总

字号+ 作者:i春秋研习社 来源:转载 2017-02-12 17:20 我要评论( )

密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或......

  密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。


1.栅栏密码
 
在IDF训练营里做过一道关于栅栏密码的问题。



栅栏密码的解法很简单,也有点复杂,字符长度因数多得会有很多个密码。对,栅栏密码的解法就是:计算该字符串是否为合数,若为合数,则求出该合数除本身和1的因数,然后将字符串分隔。用笔者自己写的解法就是这样:
此图可清晰见到解开栅栏密码的方法


2.
凯撒密码

凯撒密码,古代凯撒大帝用来打仗时的密码。凯撒密码在外界也有很多种解法。这里我用在国外CTF平台WeChall一道凯撒密码来讲解

 
密码术可以大致分为两种,即移位和替换,当然也有两者结合的更复杂的方法。在移位中字母不变,位置改变;替换中字母改变,位置不变。
将替换密码用于军事用途的第一个文件记载是恺撒著的《高卢记》。恺撒描述了他如何将密信送到正处在被围困、濒临投降的西塞罗。其中罗马字母被替换成希腊字母使得敌人根本无法看懂信息。
苏托尼厄斯在公元二世纪写的《恺撒传》中对恺撒用过的其中一种替换密码作了详细的描写。恺撒只是简单地把信息中的每一个字母用字母表中的该字母后的第三个字母代替。这种密码替换通常叫做恺撒移位密码,或简单的说,恺撒密码。
尽管苏托尼厄斯仅提到三个位置的恺撒移位,但显然从1到25个位置的移位我们都可以使用, 因此,为了使密码有更高的安全性,单字母替换密码就出现了。
如:
明码表 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密码表 T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
明文 T H E F A U L T, D EAR BRUTUS, L I ES N OT I N OUR ST ARS B UT I N OURSELVES.
密文 M A X Y T N EM, WX TK UKNMNL, EBX L GHM BG HN K LMT KL U NM BG HNK LXEOXL.(空格是为了和上排对齐)
只需重排密码表二十六个字母的顺序,允许密码表是明码表的任意一种重排,密钥就会增加到四千亿亿亿多种,我们就有超过4×1027种密码表。破解就变得很困难。

很复杂的一个解密。
大概就是:将一段英文,不停地移位。不会超过26次
在WeChall中
这段密文是这样的:RFC OSGAI ZPMUL DMV HSKNQ MTCP RFC JYXW BME MDAYCQYP YLB WMSP SLGOSC QMJSRGML GQ FBGMCZZEJAPG
那么我们不知道他究竟移了多少位。故此写一段程序不停地退位。




这里已经明显是一句英语了,密码就是HDIOEBBGLCRI
凯撒密码不同的语言写出来的方法也不同,故此请往搜索引擎查找。
 
3.MD5
最近在i春秋的30强中打CTF(作为一个初中生跟一帮大学生打很累啊)
在其中有一道被玩坏的MD5(雅蠛蝶)



在解这道题的时候,我对MD5一窍不同。先是算了下,这条MD5确实符合32位。
接着,我便看了下MD5的范围。


 

MD5是16/32/64/128位的16进制数,故此最大的数位f 所以字母中只能出现A-F然而这道题大家看到没有,在b-1之间,出现了I(即i)
故此将其改为F后顺利得出flag不过注意:有时候MD5的出题方式可能会出现33位字符。笔者建议各位朋友解密类似题目时首先检查字符串长度是不是符合MD5的长度,若符合再考虑其他。若不符合MD5长度,最多也是超出1个字符(超2个字符的话就比较困难了),可以自行编写程序循环爆破。

4.Base64

依然是在i春秋的CTF里
遇到了数次Base64,而且每次玩法都不同。一会要我加密,一会要我解密。
其实只要看出是Base64加密,一般问题不大。
Base64的范围很广。反正我见过的就这个广。

5.Base64的亲戚:Base32和Base16

这个...忘了题目...仅作一个科普...是Base64的兄弟姐妹。
i春秋的CTF有一道坑比题目:Base64
其实得用Base32才能解开。网上有解码地址。Python好像也有库。

6.十六进制
 
十六进制的组成。依然是在i春秋遇见的十六进制。需要我们用十六进制转字符串来解题。或者有一些是十六进制转为别的进制。这些都是很容易就看破的。

7.Unicode编码

Unicode是一种编码系统。所以也不知道从哪讲起。大家伙注意了,一般出现在类似这样的,基本都可以确定是Unicode编码 随便找个转换器转换一下就OK了。
 

8.Url编码
Url编码。一般出现在网址的/之后。

可以看看这个Url编码表。看一点,以后也能快速认出来。

9.Escape加密

Escape是JavaScript的一种加密方式,经常出现在JS题中。
笔者之前在IDF训练营中遇到:


这样的。此题的解法就是 利用UnEscape工具将此密文逆出来。
再一番解密后得出:



故此得到一串密文 输入即得flag
通过此例子朋友们可以看到Escape加密是存在于JS中的。所以在别的脚本中应该不会出现(反正我是没见到)

 
10.Ascii

Ascii也是一款很强势的代码。


Ascii的标准表。
之前做过什么题来着。忘了。。。不过Ascii应该是很容易就被认出的。

11.摩斯密码

摩斯密码。又称摩斯电码。SOS求救信号 等信号就是由此来的。



一种很有意义的编码


取IDF训练营一道辣鸡题。可以看到摩斯密码是怎样的。



之前团队的小伙伴用python帮我写了个解密。


代码如上。可以直观看出一个简单的摩斯密码解密的字符。
不过估计现在正规的CTF比赛中很少出现。如果有兴趣或者要做CTF兵器库的朋友可以尝试编写一个。没源码找我要。本文不贴代码。怕篇幅太大。


12.培根密码

培根密码。在i春秋CTF和IDF训练营均做过。
所以在后来的CTF中我一秒就认出来了
培根密码有俩种解法。
但是值得注意的是,很多时候他们不会告诉你是什么密码,也可能不会有提示。
如果你觉得是培根密码的话,请记住。
字体为正即A 斜为B
比如:林晨是帅比
就是AAAAA
比如:浅蓝没我帅
就是AABBB
不过培根密码相对来说,还是很好解得。五个字符为一组,一组代表一个字母。所以也不会有数字或者特殊符号。

第一种方式
A aaaaa、B aaaab、C aaaba、D aaabb、E aabaa、F aabab
G aabba、H aabbb、I abaaa、J abaab、K ababa、L ababb
M abbaa、N abbab、O abbba、P abbbb    、Q baaaa
R baaab、S baaba、T baabb、U babaa、V babab
W babba、X babbb、Y bbaaa、Z bbaab




良心排版。俩种方式都可见。

13.猪圈密码

猪圈密码,CTF中的冷门。要是打比赛遇见这题的话,可以买彩票了。
但是毕竟是做过的。所以还是得写出来。万一出现了呢。



优缺点分析,觉得很有道理。解密难度:易



之前在IDF训练营做过的关于猪圈密码的题。可以参考,大概看得出猪圈密码是咋样的把。

此题密码为:LMNQKRNP
自行理解这其中的奥妙。


14.ROT13

忘了例子,其实就是个凯撒密码的变种。
 


我记得之前i春秋有个“回旋13踢”就是这个ROT13密码。


本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Note/CTF/544.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • CTF中几种通用的sql盲注手法和注入的一些tips

    CTF中几种通用的sql盲注手法和注入的一些tips

    2018-09-28 09:22

网友点评
暂时未开启评论功能~
精彩导读