CTF知识总结--CRYPTO

CRYPTO

1.常见编码

ASCII编码、URL编码、MD5、base家族编码、Hex编码、unicode编码、莫尔斯电码(Morse Code)、shellcode编码、XX encode编码、UUencoded编码、aaencode编码、JSfuck编码、jother编码、Brainfuck编码、Ook编码、敲击码、稀奇古怪的编码、社会主义核心价值观等等

ASCII编码

使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符 。
ASCII编码图片对照表
在这里插入图片描述

URL编码

每对name/value由&;符分开;其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。
URL编码对照图

MD5

是由16位或者32位数字0-9和a-f所组成的字符串字符大小写统一,如果出现这个范围以外的字符说明这可能是个错误的md5值, 16位值是取得是8~24位

base家族编码

分为:base16、base32、base58、base62、base64、base91、base92、base100

base16
由 字母A-F、数字0-9共16个字符组成
base16
base32
由 字母A-Z、数字2-7共32个字符组成,“=”符号作为后缀填充
在这里插入图片描述
base58
用于比特币中使用的一种独特的编码方式,主要用于比特币的钱包地址,base58不使用数字 0 ,字母大写 O,字母大写 I(小写i) 和字母大写L(小写l)以及 +,/符号
base62
由(A-Z、a-z、0-9、)62个可见字符组成,相比base64,去掉 +,/两个符号

base64
由(A-Z、a-z、0-9、+、/ )64个可见字符组成,“=”符号作为后缀填充
在这里插入图片描述
base91
由(0-9,a-z,A-Z,!@#$%^&*()_+,./:;<>=?`[]{}|~")组成

base92
比base91 多了一个反向 ~ 字符

base100
由一堆Emoji 表情 组成

Hex编码

由0-9,A-F组成,字母不区分大小写,与十进制对应关系是0-9不变,A-F对应10-15

unicode编码

特征:&#x006C
用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。
在这里插入图片描述
在unicode中:汉字“字”对应的数字是23383。

四种编码方式:
&#x [Hex]:&#x0068;&#x0065;&#x006C;&#x006C;&#x006F;
&# [Decimal]:&#00104;&#00101;&#00108;&#00108;&#00111;
\U [Hex]:\U0068\U0065\U006C\U006C\U006F
\U+ [Hex]:\U+0068\U+0065\U+006C\U+006C\U+006F

shellcode编码

特征:\x34\x65\98
shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 可在暂存器eip溢出后,塞入一段可让CPU执行的shellcode机器码,让电脑可以执行攻击者的任意指令。
在这里插入图片描述
shellcode可以按照攻击者执行的位置分为本地shellcode和远程shellcode.
本地shellcode
本地运行的shellcode经常用于利用软件漏洞提升权限。比如在Linux下由普通权限提升至root权限。
远程shellcode
利用软件漏洞获得特定的shellcode,再经由C或Python编写远程攻击程序,进而取得对方电脑的root权限。

XXencode编码

将输入文本以每三个字节为单位进行编码。如果最后剩下的资料少于三个字节,不够的部份用零补齐。这三个字节共有24个Bit,以6bit为单位分为4个组,每个组以十进制来表示所出现的数值只会落在0到63之间。以所对应值的位置字符代替。它所选择的可打印字符是:±0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,一共64个字符。跟base64打印字符相比,就是uuencode多一个“-” 字符,少一个”/” 字符。
在这里插入图片描述
在这里插入图片描述

UUencode编码

是将二进制文件转换为文本文件的过程,转换后的文件可以通过纯文本e-mail进行传输,在接收方对该文件进行uudecode,即将其转换为初始的二进制文件。
在这里插入图片描述

aaencode编码

特征:颜文字
PHP的 JS颜文字
将正常的js代码转为好玩的特殊网络表情符号。

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

在这里插入图片描述

jjencode编码

jjencode代码,就是将正常的js代码转换成复杂的只有符号的字符串编码,

进行加密 如:[$._$_]+$._$+",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$这样的组合。

在这里插入图片描述

jother编码

由 ! + ( ) [ ] { } 8个字符组成 也是在console中运行就好,
这encode出来时字符串,不是js程序。

2.常见密码

摩尔斯电码(Morse Code)

包括:英文字母A-Z(无大小写区分)十进制数字0-9,以及“?”“/”“()”“-”“.”在这里插入图片描述
摩斯密码与ASCII对照表:
在这里插入图片描述

JSfuck

是基于JavaScript原子部分的深奥和教育性编程风格。它仅仅使用六个不同的字符来编写和执行代码。
分别是:() [ ] + !
它不依赖于浏览器,因此可以在Node.js上运行。

[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]

Brainfuck

由 (> < + - . , [ ]) 八种符号,也有脚本可解密
在这里插入图片描述

Ook

由大量的Ook和(. ? ! )的形式组成
在这里插入图片描述

敲击码

特征:全是 ‘ …/… …/. …/… …/. …’
敲击码(Tap code)是一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基于5×5方格波利比奥斯方阵来实现的,不同点是是用K字母被整合到C中。
在这里插入图片描述
在这里插入图片描述

QWE加密

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

栅栏密码

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


示例1:
明文: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:
明文:栅栏密码加密规则示例
每组字数:5
按照字数先把明文分成:
栅栏密码加
密规则示例
先取每组第一个字:栅密
再取每组第二个字:栏规
      密则
      码示
      加例
最后得到“栅密栏规密则码示加例”。
解密则反推:
密文被分成2个字一组:
栅密
栏规
密则
码示
加例 
先取每组第一个字:栅栏密码加
再取每组第二个字:密规则示例
最后得到“栅栏密码加密规则示例”

仿射密码

是一种表单代换密码,字母表的每个字母相应的值使用一个简单的数学函数对应一个数值,再把对应数值转换成字母。
在这里插入图片描述
加密函数:E(x) = (ax + b) (mod m),a与m互质,b任意取,其中 a与m互质,m是编码系统中字母的个数(通常都是26)。
**解密函数**:D(x) =a

Ploybius 棋盘密码 波利比奥斯方阵

把字母排列好,用坐标的形式表现出来。字母是密文,明文便是字母的坐标。
在这里插入图片描述
它们的坐标读取并不是我们习惯的行列读取,而是与之列行读取。比如字母“B”,用数字表示它就是“12”,而不是“21”。比如要表达单词“HELP”,则写成密码就是23 15 31 35。
判断是否是用棋盘密码破解的方式页很简单,只要出现数字是成双出现的数组串,而且有出现最大数字大于26的,那是棋盘密码的可能性就很大。

普莱费尔密码 Playfair

是一种使用一个关键词方格来加密字符对的加密法
它有一些不太明显的特征:密文的字母数一定是偶数;任意两个同组的字母都不会相同,如果出现这种字符必是乱码和虚码。
编写分三步:1.编制密码表 2.整理明文 3.编写密文 构成部分:1.密钥 2.明文3.密文4.注明的某个字母代替的另一个字母
算法:它依据一个5*5的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。

加密
编制密码表
第一步是编制密码表。在这个5*5的密码表中,共有5行5列字母。第一列(或第一行)是密钥,其余按照字母顺序。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。当然也要把使用频率最少的字母去掉。如:密钥是Live and learn,去掉后则为liveandr。如果密钥过长可占用第二列或行。
同时字母I和J会被当成一个字母。
如密钥crazy dog,可编制成
![在这里插入图片描述](https://img-blog.csdnimg.cn/b8b1139281c04554a65fd7112a3b5978.png)
整理明文
第二步整理明文。将明文每两个字母组成一对。如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母X(或者Q)。
如,communist,应成为co,mx,mu,ni,st。
编写密文
最后编写密文。对明文加密规则如下:
1 若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,ct对应dc
2 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。
3 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,wh对应ku或uk。
如,依照上表,明文where there is life,there is hope.
可先整理为:WH ER ET HE RE IS LI FE TH ER EI SH OP EX
然后密文为:KU YO XD OL OY PL FK DL FU YO LG LN NG LY
将密文变成大写,然后几个字母一组排列。
如5个一组就是KUYOX DOLOY PLFKD LFUYO LGLNN GLY
解密
Playfair解密算法首先将密钥填写在一个5*5的矩阵中(去Q留Z),矩阵中其它未用到的字母按顺序填在矩阵剩余位置中,根据替换矩阵由密文得到明文。
对密文解密规则如下:
1 若c1 c2在同一行,对应明文p1 p2分别是紧靠c1 c2 左端的字母。其中最后一列被看做是第一列的左方。
2 若c1 c2在同一列,对应明文p1 p2分别是紧靠c1 c2 上方的字母。其中最后一行被看做是第一行的上方。
3 若c1 c2不在同一行,不在同一列,则p1 p2是由c1 c2确定的矩形的其他两角的字母。
其实就是反其道而行之。
另外PlayFair解密算法不能解决字母中连续出现'XX'的情况,但是在英语中很少有连续两个XX的字母,所以不太影响PlayFair算法的使用。

凯撒密码

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

曲路密码

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

明文: The quick brown fox jumps over the lazy dog
填入5行7列表(事先约定填充的行列数)

在这里插入图片描述

培根密码

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

AABABABABAAAAAAAABBA

在这里插入图片描述

3.稀奇古怪的编码

社会主义核心价值观

由 社会主义核心价值观:富强、民主、文明、和谐;自由、平等、公正、法治;爱国、敬业、诚信、友善

与佛论禅

密文以“佛曰”开头,密文一般是与关佛经的汉字
在这里插入图片描述

与熊论道

密文以“熊曰”开头
在这里插入图片描述

兽音

由“嗷呜啊~”组成
在这里插入图片描述

4.需要看图对照的密码

元音密码

在这里插入图片描述

举例:
明文:I LIKE ENGLISH
密文:3.33.3.32.2.2.35.22.33.3.44.23

当铺密码

特征:出现奇怪组合的汉字
当铺密码就是一种将中文和数字进行转化的密码,算法相当简单:
当前汉字有多少笔画出头,就是转化成数字几

王:
你看王字 外面,有多少条横突出,六条, 那就是6;
口
有多少个横插出去? 封闭的,插个j8, 那就是0;
人
三个插出去,就是3啦
王夫 井工 夫口 由中人 井中 夫夫 由中大
​
                                                    # 67 84 70 123 82 77 125

在这里插入图片描述

猪圈密码

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

圣堂武士密码

作为共济会猪圈密码的一个变种,一直被共济会圣殿骑士使用。
在这里插入图片描述

标准银河字母

在这里插入图片描述
在这里插入图片描述

跳舞的小人

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

海军手旗旗语

旗语是世界各国海军通用的语言。手旗旗语适用于白天、距离较近且视距良好的情况下。夜间距离较近时,一般使用灯光通信。
在这里插入图片描述

六十甲子

请添加图片描述

提瓦特文

在这里插入图片描述

拉丁字母

在这里插入图片描述

5.文件格式

文件头 文件尾

PNG
文件头:89 50 4E 47
文件尾:AE 42 60 82
JPG(jpeg)
文件头:FF D8 FF
文件尾:FF D9
ZIP
文件头:50 4B 03 04
文件尾:50 4B
GIF
文件头:47 49 46 38
文件尾:00 3B

文件修复

有些图片无法正确打开,可能是因为图片的文件头错误,所以将图片的文件头修改为正确的文件头即可打开

十六进制异或 CRC校验修复宽度高度修复

工具—十六进制运算—二进制异或
更改图片的高度或者宽度

6.图片隐写

EXIF信息隐藏、嵌入式隐写、文件分离、LSB替换隐写、NTFS隐写、GIF隐写和修复、盲水印隐写、直接附加、

EXIF隐写

记录图片的拍摄日期、宽度、高度、分辨率、位深度等
kali中使用exif隐写:
exiftool + 图片名称 (显示文件信息、备注信息)
文件筛选:exiftool + 图片名称| grep flag (筛选出关于flag的信息)
解压压缩包命令:unzip + 文件名

嵌入式隐写

分为 追加嵌入法和前置插入法
插入的信息种类分为:文本插入(将文本插入到图片里)、文件插入(将图片插入到图片里)

文件分离

文件提取工具:binwalk或者foremost工具(kali使用)
binwalk + 文件名称
binwalk -e + 文件名称 (完全提取图片信息)
binwalk + 文件名称 -D=png(按照png格式分离出)
foremost + 文件名称 (直接分离)
blinwalk -n + 文件名
dd bs = 4308 if=baozou_new.jpg of=1.zip
foremost -v -i 要提取的原文件 -o 要输出的文件夹

LSB替换隐藏

图片中的像素一般由三种颜色组成rgb
rgb三种轨道
工具:Stegsolve

GIF隐写和修复

使用Stegsolve工具
在Analys----Frame Browser下(gif一帧一帧显示)
在Analys----Data Extract下(数据提取) LSB First ,rgb六种格式一个个试,有个图片文件头正常全选保存,
在010工具中,新建文件–接着编辑—粘贴自—粘贴自十六进制文本,最后将文件头修改正确即可
pyc文件:通过在线网站进行反编译 https://tool.lu/pyc/

NTFS隐写

盲水印隐写

直接附加

7.音频隐写、压缩包分析

频谱、波形、盲水印、Silentsys、MP3steg

8.杂项综合例题

弱口令爆破、已知明文爆破、crc32碰撞、多个压缩包合并、隐写文件或信息、docx文件转压缩包、伪加密、文件头修复

  • 12
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余笙.'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值