网络安全CTF夺旗赛入门到入狱-密码学下篇

哈喽大家好,我是菜鸡林某。今天给大家带来CTF夺旗赛入门的第一步密码学篇下半部分(干货部分)不了解什么是CTF和密码学的可以看上一篇
传送门:
网络安全CTF夺旗赛入门到入狱-入门介绍篇
网络安全CTF夺旗赛入门到入狱-密码学上篇
好那么林某人课堂正式开课

常见的几种编码方式

  1. 字符编码:
    • ASCII编码
    • base64编码
    • Unicode编码
    • URL编码
  2. javascript编码:
    • js混淆
    • JSfuck
    • jother
    • aaencode

一、ASCII编码(这玩意应该用不着我多说啥了吧学过编程的应该都懂)

Ø ASCII 码使用8位二进制数组合来表示256 种可能的字符。
Ø ASCII编码前128个称为标准ASCII 码,标准ASCII码使用后7位二进制数,即首位二进制数固定为0(0xxxxxxx),以此来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。
举例:
“A”字符=01000001=65
“A”字符:字符表示形式,日常使用
01000001:ASCII二进制表示形式,计算机运算
65:ASII十进制表示形式,CTF常用表示形式。
后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8位用于确定附加的128个特殊符号字符、外来语字母和图形符号。
在这里插入图片描述

二、Base64编码

Ø Base64:使用64个可显示字符表示所有的ASC字符。
Ø Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面
补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用
“=”,Base64编码特点:编码后输出的文本末尾可能会出现1或2个’=’
请添加图片描述
示例1:

  • 第一步:“M”、“a”、"n"对应的ASCII码值分别为77,97,110,对应的二进制值是01001101、
    01100001、01101110。如图第二三行所示,由此组成一个24位的二进制字符串。
  • 第二步:如图红色框,将24位每6位二进制位一组分成四组。
  • 第三步:在上面每一组前面补两个0,扩展成32个二进制位,此时变为四个字节:00010011、
    00010110、00000101、00101110。分别对应的值(Base64编码索引)为:19、22、5、46。 • 第四步:用上面的值在Base64编码表中进行查找,分别对应:T、W、F、u。因此“Man”Base64编码之后就变为:TWFu请添加图片描述
    示例2:
  • 一个字节:一个字节共8个二进制位,依旧按照规则进行分组。此时共8个二进制位,每6个一组,则第二组缺少4位,用0补齐,得到两个Base64编码,而后面两组没有对应数据,都用“=”补上。因此,上图中“A”转换之后为“QQ==”;
  • 两个字节:两个字节共16个二进制位,依旧按照规则进行分组。此时总共16个二进制位,每6个一组,则第三组缺少2位,用0补齐,得到三个Base64编码,第四组完全没有数据则用“=”补上。因此,上图中“BC”转换之后为“QKM=”。请添加图片描述

三、Unicode编码

Ø 定义:Unicode码扩展自ASCII字元集。在严格的ASCII中,每个字符用8个二进制数(8bit=1byte)
表示;而Unicode是由16个二进制数(2byte)组成的编码字符集。这使得Unicode能够表示世界上所
有的书写语言中可能用於电脑通讯的字元、象形文字和其他符号。
Ø 特点:密文中有多个 \uxxx请添加图片描述

四、URL编码

Ø url编码,是URL(统一资源定位符)编码方式,因为服务器只能解析URL中常用的数字,字母和部
分特殊字符(/😡?等),其它的字符必须通过URL编码进行编码才能被服务器正常解析。
Ø url编码方式就是在某个字符ascii码的十六进制前面加上“%”。 Ø url编码特点:密文中有多个%号符
举例:空格字符:ASCII码十进制表示形式为32,对应16进制的数值为20,URL编码为%20
以及像中文字符作为参数传输时也需要进行URL编码才能被服务器解析。请添加图片描述

五、JS混淆

Ø 开发者为了保护javascript版权,使用eval函数进行其进行混淆处理,该函数可以计算字符串,并执行其中的JS代码从而起到混淆js代码的作用。
Ø 例如:对进行16
进制转换,然后使用eval函数进行读取

Ø 特点:通常在JS脚本里使用eval与function函数进行混淆。
请添加图片描述

六、JSFuck

Ø JSFuck:用6 个字符 !+ 来编写 JavaScript程序。
Ø 举例:
JavaScript代码:alert(1);使用了!+进行编写。
解密方式1:点击run this 可进行解密,
解密方式2:将加密密文放在浏览器的console控制台上进行解密
请添加图片描述

七、Jother

Ø Jother是一种运用于javascript语言中利用少量字符构造精简的匿名函数方法对于字符串进行的编
码方式。其中8个少量字符包括: ! + ( ) [ ] { } 。 Ø 解密方式:jother解码工具/利用浏览器开发者工具进行解密Jother
Ø Jother是一种运用于javascript语言中利用少量字符构造精简的匿名函数方法对于字符串进行的编
码方式。其中8个少量字符包括: ! + ( ) [ ] { } 。 Ø 解密方式:jother解码工具/利用浏览器开发者工具进行解密
请添加图片描述

八、aaencode

Ø aaencode:使用常见的网络表情符号对js代码进编码。
Ø 解密:可以直接在控制台进行解码,或者在以下的链接网站进行解码
加解密地址:http://utf-8.jp/public/aaencode.html
请添加图片描述常见的几种加密

  1. 换位加密:
    • 栅栏密码
    • 曲路密码
    • 列位移密码
  2. 替换加密:
    • 凯撒密码
    • 摩斯密码
    • ROT5/13/18/47
    •维吉尼亚密码
    • 培根密码
    • 键盘密码

换位密码——栅栏密码

Ø 栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文请添加图片描述

曲路密码(Curve Cipher)

是一种换位密码,需要事先双方约定密钥(也就是曲路路径)
请添加图片描述

列移位密码(Columnar Transposition Cipher)

是一种比较简单,易于实现的换位密码,通过一个简单的规则将明文打乱混合成密文
请添加图片描述
请添加图片描述

凯撒密码(Caesar Cipher或称恺撒加密、恺撒变换、变换加密、位移加密)

是一种替换加密,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推
请添加图片描述

请添加图片描述

摩尔斯电码(Morse Code)是由美国人萨缪尔·摩尔斯(这个应该小学生都知道吧)

在1836年发明的一种时通时断的且通过不同的排列顺序来表达不同英文字母、数字和标点符号的信号代
码,摩尔斯电码主要由以下5种它的代码组成:

  1. 点(.)
  2. 划(-)
  3. 每个字符间短的停顿(通常用空格表示停顿)
  4. 每个词之间中等的停顿(通常用 / 划分)
  5. 以及句子之间长的停顿请添加图片描述
    请添加图片描述

替换加密——ROT5/13/18/47

Ø ROT5:只对数字进行编码,用当前数字往后数的第5个数字替换当前数字,例如当前为0,编码
后变成5,当前为1,编码后变成6,以此类推顺序循环。
Ø ROT13:只对字母进行编码,用当前字母往后数的第13个字母替换当前字母,例如当前为A,编
码后变成N,当前为B,编码后变成O,以此类推顺序循环。
Ø ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18。所以ROT18 就是按照ROT5和ROT13的规则对数字和字母都进行编码。
Ø ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符
ASCII值往后数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,
当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126,具体可参考ASCII编码。
图为ROT13加密前后
请添加图片描述

维吉尼亚密码(Vigenère Cipher)

是在单一恺撒密码的基础上扩展出多表代换密码,根据密钥(当密钥长度小于明文长度时可以循环使用)来决定用哪一行的密表来进行替换,以此来对抗字频统计。
请添加图片描述
请添加图片描述

培根密码(Baconian Cipher)

是一种替换密码,每个明文字母被一个由5字符组成的序列替换,最初
的加密方式就是由‘A’和‘B’组成序列替换明文(所以你当然也可以用别的字母),比如字母‘D’
替换成“aaabb”,以下是全部的对应关系(另一种对于关系是每个字母都有唯一对应序列,I和J 与U/V各自都有不同对应序列)请添加图片描述

请添加图片描述
替换加密——键盘密码

  1. QWE加密法:QWE=ABC按照键盘上的字母顺序对应ABC,只对字母加密请添加图片描述

  2. 电脑键盘棋盘加密请添加图片描述

  3. 电脑键盘坐标加密请添加图片描述

  4. 手机键盘密码
    请添加图片描述

摘要算法

MD5(哈希算法)

  • MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
  • MD5值分为16位和32位,同常MD5的值中最大是F,如,603F52D844017E83CA267751FEE5B61BMD5在线加解密地址:http://www.cmd5.com/http://www.somd5.com/http://www.pmd5.com/

SHA(安全哈希算法)

  • SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。SAH的值通常是40位,最大值是F。
  • 对强行攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2^128 数量级的操作,而对SHA-1则是2^160数量级的操作。这样,SHA-1对强行攻击有更大的强度。
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸡林某

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

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

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

打赏作者

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

抵扣说明:

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

余额充值