CTF在密码学阶段使用工具罗列
in 笔记 with 0 comment
CTF在密码学阶段使用工具罗列
in 笔记 with 0 comment

该章作为CTF新手入门使用,主要罗列了密码学阶段遇到的相关算法的编码/解码(罗列不是很详尽,毕竟你和我的暗号也能当做一门编码)


1.编码

主要讲解各种常见编码

Base64/32/16
特征:多以‘=’或‘==‘结尾
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,base64就是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应4个base64单元,即3个字节可表示4个可打印字符。它可用来作为电子邮件的传输编码。在base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同系统中而不同。

ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30=
base32、base16可以分别编码转化8位字节为6位、5位、4位。16,32分别表示用多少个字符来编码

Ook
特征:大量Ook

Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook!
Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook. Ook? Ook. 

Brainfuck
特征:大量++++

+++++ +++[- >++++ ++++< ]>+++ .<+++ +[->+ +++<] >+.<+ ++[-> ---<] >---- -.<

MD5
特征:32字符或16字符
国内一种是动网的16字符另外有一种变化过的md5,特征是全是数字,长度可能是20位或者19

加密后为128位(bit),按照16进制(4位一个16进制数)编码后,就成了32个字符,而不是32位。

MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

59db9139e685f7d6a4a8784f9221066f

Quoted-printable
特征:' = '后跟 ' Hex '

Quoted-printable可译为“可打印字符引用编码”,编码常用在电子邮件中,如:Content-Transfer-Encoding: quoted-printable ,它是MIME编码常见一种表示方法。 在邮件里面我们常需要用可打印的ASCII字符 (如字母、数字与"=")表示各种编码格式下的字符。

=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6

Rabbit
明文I Love You小可爱无密匙加密后密文为U2FsdGVkX1/ouFei55jKdzY1fWNS4jxHVNf/AfKWjnBrOGY=

明文I Love You 521无密匙加密后密文为U2FsdGVkX19DvuEo5PvBA8TuLrM2t+EZBvUkzlAa

明文I Love You 521密匙为666加密后密文为U2FsdGVkX18w6vxXxux/ivRVwo3xMzTxmUyk7cHz

U2FsdGVkX19i6wXFiiIq90SoDw

RSA
特征:出现 'e' 'p' 'q' 'n' 'd'

公钥n = p * q,其中p和q是两个大素数

e是随机选择的数,作为公钥

d是跟e有关的一个数,满足条件式:ed=1(mod phi(n))

phi(n)是欧拉函数,phi(n)=(p-1)(q-1)

在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flga提交
Math is cool! Use the RSA algorithm to decode the secret message, c, p, q, and e are parameters for the RSA algorithm.
​
p =  9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q =  11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e =  65537
c =  83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
​
Use RSA to find the secret message

凯撒
移位密码只有25种密匙(25次位移)

凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。现今又叫“移位密码”,只不过移动的位数不一定是3位而已。

FWI
位移3                     
                        #CTF

Test

栅栏
栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文,这里以2栏栅栏加密为例。

明文:The quick brown fox jumps over the lazy dog

去空格:Thequickbrownfoxjumpsoverthelazydog

分组:Th eq ui ck br ow nf ox ju mp so ve rt he la zy do g

第一组:Teucbonojmsvrhlzdg

第二组:hqikrwfxupoeteayo

密文:Teucbonojmsvrhlzdghqikrwfxupoeteayo

一只小羊翻过了2个栅栏KYsd3js2E{a2jda}
                                            #KEY{sad23jjdsa2}

曲路密码
曲路密码(Curve Cipher)是一种换位密码,需要事先双方约定密钥(也就是曲路路径)。

明文: The quick brown fox jumps over the lazy dog
​
填入5行7列表(事先约定填充的行列数)
 ![Test](https://pic1.zhimg.com/80/v2-b965de7e0aa1353311c70b4846b07954_720w.jpg) 


加密的回路线(事先约定填充的行列数)
 ![Test](https://pic1.zhimg.com/80/v2-a65fffc1a373a03594cba4263bf4e0fc_720w.jpg) 


密文: gesfc inpho dtmwu qoury zejre hbxva lookT







 **HTML实体编码** 
特征:’ & nbsp; ‘
熟悉 等常用的这些HTML符号,但是对于&#开头的,之前也看到过这种编码只是一直不知道缺什么名字以至于查资料也不好查,去百度还花费了点时间,主要是不知道该叫他们叫什么,找到答案是“HTML实体码编”,平时我们见的 是html的实体字符,其实在后面 还对应一个实体编码。
 ![Test](https://pic3.zhimg.com/80/v2-9b8f959d1133b2aeb51bdb2fbe1e97d6_720w.jpg) 







 **敲击码** 
特征:全是 ‘ .../.. ../. ../.. ../. ...'


敲击码(Tap code)是一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基于5×5方格波利比奥斯方阵来实现的,不同点是是用K字母被整合到C中。
 ![Test](https://pic1.zhimg.com/80/v2-c07143450e0f834b579eecfb97ca97e0_720w.jpg) 











 **摩斯** 
特征:' . ' ' - '


摩尔斯电码(英语:Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是由美国人艾尔菲德·维尔(Alfred Lewis Vail)与萨缪尔·摩尔斯(Samuel Finley Breese Morse)在1836年发明。



摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用0和1两种状态的二进制代码,它的代码包括五种:

1.点(.)

2.划(-)

3.每个字符间短的停顿(在点和划之间的停顿)

4.每个词之间中等的停顿

5.以及句子之间长的停顿

 `.. .-.. --- ...- . -.-- --- ..-` 


 **ASCII** 
特征:’100‘ ’10‘


ASCII码大致可以分为三部分组成:

第一部分是:ASCII非打印控制字符

第二部分是:ASCII打印字符;

第三部分是:扩展ASCII打印字符。

突然天上一道雷电gndk€rlqhmtkwwp}z

                    #分析gndk€rlqhmtkwwp}z这个格式有点像flag{*******}?

                    #我们比较一下"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}

`
Test

当铺密码
特征:出现奇怪组合的汉字

当铺密码就是一种将中文和数字进行转化的密码,算法相当简单:

当前汉字有多少笔画出头,就是转化成数字几

王:

你看王字 外面,有多少条横突出,六条, 那就是6;

有多少个横插出去? 封闭的,插个j8, 那就是0;

三个插出去,就是3啦

王夫 井工 夫口 由中人 井中 夫夫 由中大
​
                                                    # 67 84 70 123 82 77 125

培根密码
特征:出现大量ababababab

培根密码中的ab,代表的是数学二进制中的0和1

培根密码本质上是将二进制信息通过样式的区别,加在了正常书写之上。培根密码所包含的信息可以和用于承载其的文章完全无关。培根密码实际上就是一种替换密码,根据所给表一一对应转换即可加密解密 。它的特殊之处在于:可以通过不明显的特征来隐藏密码信息,比如大小写、正斜体等,只要两个不同的属性,密码即可隐藏。

AABABABABAAAAAAAABBA

Test

猪圈
特征:各种 匚凵
猪圈密码(亦称朱高密码、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码。即使使用符号,也不会影响密码分析,亦可用在其它替代式的方法。

L c e A n C T F
                        #直接粘贴在此处  可以直接转换

Test

Unicode
特征:\u0059\u006f\

统一码,也叫万国码、单一码(Unicode)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式发布1.0版本,2020年发布13.0版本。

原文: had me at hello

编码后\u0059\u006f\u0075\u0020\u0068\u0061\u0064\u0020\u006d\u0065\u0020\u0061\u0074\u0020\u0068\u0065\u006c\u006c\u006f

URL
特征:%66%6c%20%7D

url编码又叫百分号编码,是统一资源定位(URL)编码方式。URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。 现在已经成为一种规范了,基本所有程序语言都有这种编码,如js:有encodeURI、encodeURIComponent,PHP有 urlencode、urldecode等。编码方法很简单,在该字节ascii码的的16进制字符前面加%. 如 空格字符,ascii码是32,对应16进制是’20’,那么urlencode编码结果是:%20。

%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d

                        #flag{and 1=1}

ROT5/13/18/47编码
ROT5、ROT13、ROT18、ROT47 编码是一种简单的码元位置顺序替换暗码。此类编码具有可逆性,可以自我解密,主要用于应对快速浏览,或者是机器的读取,而不让其理解其意。

ROT5 是 rotate by 5 places 的简写,意思是旋转5个位置,其它皆同。

下面分别说说它们的编码方式: ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。 ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环。 ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18。

ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126

Good Day经过ROT47加密后为v@@5 s2JP

跳舞的小人
特征:一群跳舞的小人
来自夏洛克福尔摩斯在《归来记》中侦探案件使用的一种加密方式。
Test

QWE加密
从电脑键盘上的字母从Q开始数,顺序是Q W E R T Y U I。。。对应的字母顺序依次是A B C D E F G H 也就是说Q=A,W=B,E=C,依次类推。

shellcode
特征:\x34\x65\98
其实就是 16进制

\x54\x68\x65\x7f\x71\x75\x69\x63\x6b\x7f\x62\x72\x6f\x77\x6e\x7f\x66\x6f\x78\x7f\x6a\x75\x6d\x70\x73\x7f\x6f\x76\x65\x72\x7f\x74\x68\x65\x7f\x6c\x61\x7a\x79\x7f\x64\x6f\x67

UUencode编码
UUencode是一种二进制到文字的编码,最早在unix 邮件系统中使用,全称:Unix-to-Unix encoding,UUencode将输入文本以每三个字节为单位进行编码,如果最后剩下的资料少于三个字节,不够的部份用零补齐。三个字节共有24个Bit,以6-bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值。这个数值只会落在0到63之间。然后将每个数加上32,所产生的结果刚好落在ASCII字符集中可打印字符(32-空白…95-底线)的范围之中。

源文本: 你很棒呢

编码后: (Q..ZW+#TQ-@`

Unicode编码
特征:l

Unicode编码有以下四种编码方式:

源文本: lcean

&#x [Hex]:&#x006C;&#x0063;&#x0065;&#x0061;&#x006E;
&# [Decimal]:&#00108;&#00099;&#00101;&#00097;&#00110;
\U [Hex]:\U006C\U0063\U0065\U0061\U006E
\U+ [Hex]:\U+006C\U+0063\U+0065\U+0061\U+006E

Escape/Unescape编码
特征:%u0054%u0067
Escape/Unescape加密解码/编码解码,又叫%u编码,采用UTF-16BE模式, Escape编码/加密,就是字符对应UTF-16 16进制表示方式前面加%u。Unescape解码/解密,就是去掉"%u"后,将16进制字符还原后,由utf-16转码到自己目标字符。如:字符“中”,UTF-16BE是:“6d93”,因此Escape是“%u6d93”。

源文本: The

编码后: %u0054%u0068%u0065

AAencode编码
特征:颜文字
PHP的 JS颜文字

(゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]

文本加密汉字
特征:无序无组合汉字
文本加密可以将正常文本内容打乱为不可连读的文字或符号(汉字 数字 字母 音乐符号 国际音标 盲文 韩文 日文 傣文 彝文 箭头符号 花朵符号 俄文),换行等格式信息也会被清除,达到加密的作用。在进行文本加密时可以设定一个密码,这样只有知道密码的人才能解密文本。密码可以是数字、字母和下划线,最多九位。

维吉尼亚密码
Test

TTL
只有前两位是变化的。这就是TTL隐写。

00111111

01111111

10111111

11111111

各种怪异编码
文件提供内容可知flag为名字首字母缩写加生日

姓名:张三 
生日:19900315
key格式为key{xxxxxxxxxx}

                    #flag{zs19900315}
Responses