CTF-Crypto密码学

关于CTF

CTF(Capture The Flag),即夺旗赛。在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容(Flag),并将其提交给主办方,从而夺得分数。

CTF竞赛模式具体分为以下三类:

  1. 解题模式

    通过互联网或现场网络参与,解决网络安全技术挑战题目,并以分值和时间排名。

  2. 攻防模式

    在攻防(AWD)模式CTF赛制中,在网络空间互相进行攻击和防守,挖掘网络服务漏洞并攻击对手来得分,修补自身服务漏洞进行防御来避免丢分。

  3. 混合模式

    结合了解题模式与攻防模式的CTF赛制,参赛队伍通过解题可以获取一些初始分数,然后通过攻防对抗进行得分增减的零和游戏,最终以得分高低分出胜负。

赛题类型一般分为Web 渗透、Crypto 密码学、Pwn 二进制、Reverse 逆向、Misc 杂项,拓展的还有Mobile 移动设备, Forensics 电子取证等,这些其实都可以归入前面五大类中。

Crypto

编码

ASCII

ASCII

Base64\Base32\Base16编码

常见的base系列编码有base64、base32、base16,其中

base64:含az,AZ,0~9,+,/ 以及补位的 ‘’=’’;(补齐字符串长度为4的倍数)

base32:含AZ,27以及补位的 ‘’=’’;(补齐字符串长度为8的倍数,可以不添加)

base16:含09,AF。

注意换表

参考:https://www.qqxiuzi.cn/bianma/base.php

Unicode编码

特征是以\u数字或者字母加数字\u过后是每四个为一组。可以使用python的print函数输出。

URL编码

url编码又叫百分号编码,是统一资源定位(URL)编码方式。其形式为%加上十六进制数值。

HTML实体编码

一些字符在 HTML 中是预留的,拥有特殊的含义,比如小于号‘<’用于定义 HTML 标签的开始。如果我们希望浏览器正确地显示这些字符,我们必须在 HTML 源码中插入字符实体。用一个编号写入HTML代码中来代替一个字符,在使用浏览器访问网页时会将这个编号解析还原为字符以供阅读。

http://www.w3school.com.cn/html/html_entities.asp

莫尔斯电码和敲击码

摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它的代码包括五种:点、划、点和划之间的停顿、每个字符之间短的停顿、每个词之间中等的停顿以及句子之间长的停顿。

除此之外,常用的编码方式还有敲击码(Tap code)等。

JSFuck

JSFuck也称为Jother编码,是JavaScript的一种变形编码,因此可以使用浏览器控制台输出。其源于一门编程语言Brainfuck,主要的思想就是只使用8种特定的符号来编写代码。而JSFuck也是沿用了这个思想,它仅仅使用6种符号来编写代码。它们分别是**()+[]!**。

http://www.jsfuck.com/

http://www.liminba.com/tool/jsfuckdecode/

Brainfuck

Brainfuck是一种极小化的计算机语言,目标是建立一种简单的、可以用最小的编译器来实现的、符合图灵完全思想的编程语言。BrainFuck 语言只有八种符号,所有的操作都由这八种符号(**> < + - . , [ ]** )的组合来完成。

https://www.splitbrain.org/services/ook

古典密码

恺撒密码

恺撒密码是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数值进行偏移,替换成密文。

1
2
3
4
5
6
例如:
密钥:3(当偏移量是左移3的时候)
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
明文:FIGHTING
密文:ILJKWLQJ

栅栏密码

栅栏密码就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。

1
2
3
4
5
例如:
明文: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
密文:Teucbonojmsvrhlzdghqikrwfxupoeteayo

培根密码

又名倍康尼密码(英语:Bacon’s cipher)是由法兰西斯·培根发明的一种隐写术。是一种替换密码,每个明文字母被一组五个英文字母的序列替换。如下表

image-20230227134125266

加密者需使用两种不同格式或属性,分别代表A和B。准备好一篇包含相同AB字数的假信息后,按照密文格式化假信息,即依密文中每个字母是A还是B分别套用两种格式或属性。

1
2
3
4
5
例如:
密文:bAcon iS a MEaT prodUcT prePared frOm a pig and UsuALLy cUReD
五个一组重新排列:bAcon iSaMEaTpro dUcTp rePar edfrO mapig andUs uALLy cUReD
小写字母转换成A,大写字母转换成B:abaaa ababb abaaa ababa aabaa aaaab aaaaa aaaba abbba abbab
根据转换表每五个密文字母对应一个明文字母,得到明文:i like bacon

仿射密码

仿射密码是一种单表代换密码,字母表中的每个字母相应的值使用一个简单的数学函数映射到对应的数值,再把对应数值转换成字母。每一个字母都是通过函数(ax + b)mod m加密,其中b是位移量,为了保证仿射密码的可逆性,a和m需要互质,一般m为设置为26。

维吉尼亚密码

维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。另外,维吉尼亚密码必须有一个密钥,这个密钥由字母组成,最少一个,最多可与明文字母数量相等。

b327494746995423ab63fbc0799d2698

1
2
3
4
5
例如:
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
密钥(循环使用,密钥越长相对破解难度越大):CULTURE
加密过程:如果第一行为明文字母,第一列为密钥字母,那么明文字母'T'列和密钥字母'C'行的交点就是密文字母'V',以此类推。
密文:VBP JOZGM VCHQE JQR UNGGW QPPK NYI NUKR XFK

https://www.qqxiuzi.cn/bianma/weijiniyamima.php

对称密码

AES、DES、RC4、Rabbit、3DES加密

RC4加密过程:

  1. 生成伪随机数组S:长度为256,填充所有元素从0到255;
  2. 初始化状态向量:将数组S中的元素按照指定的密钥K进行一次打乱;
  3. 产生密钥流:从位置0开始,每次取出S中的一个元素,然后将其与前一个元素进行交换,并取出交换后的元素;
  4. 加密过程:将明文每一个字节和密钥流中的一个字节进行异或运算,得到密文。

RC4解密过程:

  1. 根据密钥K,生成相同的伪随机数组S;

  2. 初始化状态向量,将数组S中的元素按照密钥K进行一次打乱;

  3. 从位置0开始,每次取出S中的一个元素,并与前一个元素进行交换,取出交换后的元素;

  4. 解密过程:将密文每一个字节和密钥流中的一个字节进行异或运算,得到明文。

    1
    2
    3
    4
    5
    6
    7
    # RC4解密函数
    def rc4_decrypt(data, key):
    key = bytes(key, encoding="utf-8")
    enc = ARC4.new(key)
    res = enc.decrypt(data)
    res = str(res,"utf-8")
    return res

非对称密码

RSA、 DSA、 DH 和 ECC加密

哈希摘要算法

1
2
3
4
5
6
7
8
9
10
11
MD432位的摘要算法。2add09183d0b1dc0428701df9838fba
MD532位的摘要算法。63a9f0ea7bb98050796b649e8548184
SHA140位的摘要算法。dc76e9f0c0006e8f919e0c515c66dbba3982f785
SHA22456位的摘要算法。871ce144069ea0816545f52f09cd135d1182262c3b235808fa5a3281
SHA25664位的摘要算法。4813494d137e1631bba301d5acab6e7bb7aa74ce1185d456565ef51d737677b
SHA38496位的摘要算法。7ed8c2c790aa83d6c3e404b5368f6832c18d46a0e98b9c7a7a5e3ef823e2c9f0e310abbf6f7ea9d9d883ccb64ec2736a
SHA512128位的摘要算法。99adc231b045331e514a516b4b7680f588e3823213abe901738bc3ad67b2f6fcb3c64efb93d18002588d3ccc1a49efbae1ce20cb43df36b38651f11fa75678e8
SHA3_22456位的摘要算法。3e42295e89a3a84ce7ee38e2ba317aeb57ca3164459bdf48f4da0e92
SHA3_25664位的摘要算法。a00e4d3b352e9d11979549b9eef5dc951592f594488451e6cd86fdc4bce76a53
SHA3_38496位的摘要算法。aac595410801e93eadb099ac575ccc12e43be2c15e31e7991e908329e5beb0729881b3be9ccdb0eeb6eb79335ea38b6d
SHA3_512128位的摘要算法。8cd824c700eb0c125fff40c8c185d14c5dfe7f32814afac079ba7c20d93bc3c082193243c420fed22ef2474fbb85880e7bc1ca772150a1f759f8ddebca77711f

CTF-Crypto密码学
http://wangchenchina.github.io/2023/03/03/CTF-Crypto密码学/
作者
Demo
发布于
2023年3月3日
许可协议