CTF集训(3)

古典密码学

咳咳,这个笔记大概是10号左右完成的(

相关概念

  • 明文M、密文C
  • 加密算法:明文+加密密钥
  • 解密算法:密文+解密密钥
  • 密钥空间K

攻击一般发生在密文的传递过程中

主要思想

分组密码:分成明文块$M_i$ ,用同一密钥$K_e$ 加密

序列密码:逐位进行加密解密

古典密码学的安全性基于算法的安全性。

单表替换

明密文一一对应

空间较小:暴力破解

密文长度足够长:词频分析

  • Carsar’s Cipher:

    • 移动固定数目
    • $c = (m + 3) \mod 26$
    • 破解方法:遍历26个偏移量
  • 移位密码:

    • 同时处理数字和特殊字符
    • 用ASCII码进行移位
  • 简单替换密码

    • 不是简单的移位,完全混乱的进行加密

    • 利用词频分析破解

    • [here]: http://quipquip.com/

  • 仿射密码

    • $E(x) = (ax + b ) \pmod m$
    • 解密函数:$D(x) = a^{-1} (x-b)$

多表代换

加密后基本上不代表原本的密码。

  • 维吉尼亚密码
    • $M = C = K = Z_{26}^l$ ,是一个向量序列
    • $c = {(m_1+k_1) \mod 26, (m_2+k_2) \mod 26, \cdots, (m_s + k_s) \mod 26}$
    • 需要分组进行转换
    • 破解采用Kasiski测试法或者重合指数法。
    • 利用分治,将密文分成很多组,形成不同的移位密码。
    • 如果长度猜对,那么$I_c = \sum p_i^2 = 0.065$ ,否则是$0.038$
    • 已知密钥 https://planetcalc.com/2468 或pycipher库
    • 未知密钥 https://www.mygeocachingprofile.com/codebreaker.vigenerecipher.aspx
  • 希尔密码
  • 棋盘密码
    • $(a, b) => 5a+b$ ,对应26字母

其他密码

  • 键盘密码
    • 棋盘密码,加入了大小写和数字
    • 坐标密码,用电脑键盘建系
    • QWE密码,按照键盘排序替换
  • 栅栏密码
    • 分成$N$个一组
    • 例如:THERE IS A CIPHER
    • TH ER EI SA CI PH ER
    • 得到 TEESCPE // HRIAIHR
    • 再栅栏一次 TH ER EI SA CI PH ER
  • 猪圈密码
    • 谔谔
    • 舞动的小人密码
  • 培根密码
    • a AAAAA b AAAAB c AAABA d AAABB …
    • 斜体替换成A,正常字体替换成B,然后进行解密

CTFcrack做测试、渗透要有书面授权

习题

转啊转

这个题是真的转啊转,草

先按照密钥排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2  <KPBELNFCZDTRXMJQOYHGVSFUWI <
5 <IHFRLALEUOTSGJVDKCPMNZQWXY <
8 <NOZUTWDCVRJLXKISEFAPMYGHBQ <
9 <QWATDSRFHENYVUGMCOIKZGJXPL <
10 <WABMCXPLTDSRJQZGOIKFHEIYVU <
12 <TDGWAYXPLVUBOIKZSJRFHENMCQ <
11 <XPLTNAOIKFZGHENYSRUBMCQWVJ <
14 <XPHKZGJTOSENYVUBMLAOIRFCQW <
3 <BDMAIZVRNSJUWFHTEQGYXPLOSK <
4 <RPLNDVHGFCUKTEBSXQYIZRJWAO <
1 <ZWAXJGDLUBVIQHKYPNTCREOSCE <
7 <GWTHSPYBXFZUTVKMRAFDCEONJQ <
6 <AMKGHIWPNYCJBFZDRUSLOQXFET <
13 <BMCSRFHLTDENQWAOXPYVUEKZGJ <
15 <PSIOQAUZYWLMXNCHEKRGBFTVJD <

再按照密文挪一下,比如看到H就把H放到第一个这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2  <HGVSFUWIKPBELN F CZDTRXMJQOY <
5 <PMNZQWXYIHFRLA L EUOTSGJVDKC <
8 <TWDCVRJLXKISEF A PMYGHBQNOZU <
9 <QWATDSRFHENYVU G MCOIKZGJXPL <
10 <TDSRJQZGOIKFHE I YVUWABMCXPL <
12 <GWAYXPLVUBOIKZ S JRFHENMCQTD <
11 <SRUBMCQWVJXPLT $ AOIKFZGHENY <
14 <IRFCQWXPHKZGJT $ SENYVUBMLAO <
3 <JUWFHTEQGYXPLO $ KBDMAIZVRNS <
4 <GFCUKTEBSXQYIZ $ JWAORPLNDVH <
1 <LUBVIQHKYPNTCR $ OSCEZWAXJGD <
7 <EONJQGWTHSPYBX $ ZUTVKMRAFDC <
6 <YCJBFZDRUSLOQX $ ETAMKGHIWPN <
13 <LTDENQWAOXPYVU $ KZGJBMCSRFH <
15 <LMXNCHEKRGBFTV $ DPSIOQAUZYW <

密码就出现了

混合编码

先看一下,文本

1
...1OyYjMTE5Ow==

有等号,是个base64

解密一波,得到一堆unicode

再解密一波,得到一个很长的字符串

不太行,太长了,试了试密码好像也不是

所以再用发现base64解码,得到

1
/119/101/108/99/111/109/101...

应该是ASCII了,解出来就行

classic cipher

一大串大写英文,试一下凯撒不太行

试试维吉尼亚

网站爆破,yes,怎么出来500个key

分析一下结构,盲猜一波,估计是

1
vigenereciphercanbecrackedbyfrequcncyanalysisattackvigenereciphercanbecrackedbyfrequcncyanalysisattack

咳咳,然后分析一下解密文本,好像是关于凯撒吃鱼的故事

我们查找一下文本,发现有两处相符,一处是告你flag两边加大括号、中间要空格,一处告你flag是啥

但不知道是不是我这的问题,这个flag的frequency拼错了,需要手动修正一下..

老千层饼了

一共四个文件

先看这个图片,是舞动的小人密码

不谢,解读出来是UGK_DQIP_DUAGTD_QUT_DUAOPMK_WZK_SZU ,嗯,绝对没用去看标准答案是啥

没什么思路,看一下2.txt,应该是malboge密码,解码:

http://www.lscheffer.com/malbolge_interp.html

1
2
3
4
+++++ ++[-> +++++ ++<]> .---. <++++ ++++[ ->+++ +++++ <]>++ ++++. ++++.
----. <++++ +++++ [->-- ----- --<]> ---.< +++++ +++[- >++++ ++++< ]>+++
+++++ +.<++ +[->+ ++<]> +.<++ +++++ ++[-> ----- ----< ]>--. <++++ +++++
..

估计是brainfuck没跑了

别套了,再套人没了

去网站上再解一波码https://www.splitbrain.org/services/ook

给出了提示:

1
1.txt is the cipher text of Vigenere cipher. The key is 'ciph$$$$$$$'.

我们拿这个给1.txt解码,得到一个没什么规律的字符串。不知道能干啥,试试解压缩包,发现开了,出来一个字母对照表。

用这个对照表解小人密码就得到了flag。

Author

LittleRewriter

Posted on

2020-07-30

Updated on

2021-07-28

Licensed under

Comments