前言

暑假刷安全牛的课,看视频有点够了,想做点题,选择了实验吧,结果上来就整懵了

web题,牵扯到了CBC反转字节攻击,密码学!?

查阅资料,学习一下

CBC加解密

CBC 模式中会先将明文分组与前一个密文分组进行 XOR 运算,然后再进行加密。

当然,对第一个明文分组来说,是没有前一个密文分组的,那么就需要一个初始化向量(简称IV)

 

CBC加解密图示:

异或的概念

当两个数的二进制表示进行异或运算时,当前位的两个二进制表示不同则为 1,相同则为 0。该方法被广泛推广用来统计一个数的 1 的位数
 
参与运算的两个值,如果两个相应 bit 位相同,则结果为 0,否则为 1。
即:
0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0
 
按位异或的 3 个特点:
(1) 0 ^ 0 = 0,0 ^ 1 = 1 即 0 异或任何数=任何数
(2) 1 ^ 0 = 1,1 ^ 1 = 0 即 1 异或任何数 = 任何数取反
(3) 任何数异或自己=把自己置 0
 

CBC反转字节攻击

精髓

通过损坏密文字节来改变明文字节

讲解

根据解密方式我们可以知道,A=密文分组2,B=明文分组3,C为经过解密但还没进行异或的密文分组3,D为我们经过攻击反转要得到的明文。
在整个过程中,明文、密文我们都是知道的,但是加解密的密钥是不知道的,所以我们不能直接改变信息,要通过下面的方法进行反转字节攻击
 
 
方便查看:A = 密文分组 2,B = 明文分组 3,C 为经过解密但还没进行异或的密文分组 3(就简称为密文分组 3 了),D 为我们经过攻击反转要得到的明文。
 
B = A ^ C(解密时)解释:明文分组 3 = 密文分组 2 ^ 解密后的密文分组 3(解密时)
C = A ^ B(加密时)解释: 密文分组 3 = 密文分组 2 ^ 明文分组 3(加密时)
 
那么发现:
B ^ A ^ C = 0
解释:明文分组 3 ^ 密文分组 2 ^ 密文分组 3 密文分组 3 ^ 密文分组 3 = 0
 
此时如果:
A ^ B ^ C ^ D = D
解释:明文分组 3 ^ 密文分组 2 ^ 密文分组 3 ^ 任意值 = 密文分组 3 ^ 密文分组 3 ^ 任意值 = 0 ^ 任意值 = 任意值
 
也就是说我们如果改变了密文为 A = A ^ B ^ D,就可以使解密后的明文成为:D
 

总结

 
 
公式可以总结为下:原本的密文改为:原本的密文 ^ 原本对应的明文 ^ 希望变成的值
 
 

【密码学】CBC反转字节攻击的更多相关文章

  1. 痞子衡嵌入式:i.MXRT连接特殊Octal Flash时(OPI DTR模式下反转字节序)下载与启动注意事项(以MX25UM51245为例)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是OPI DTR模式下反转字节序的Octal Flash在i.MXRT下载与启动注意事项. 在恩智浦官方参考设计板 MIMXRT595-E ...

  2. 实验吧之【简单的登录题(】CBC字节反转攻击)

    开始刷ctf题吧  慢慢来. 实验吧---简单的登录题 题目地址:http://ctf5.shiyanbar.com/web/jiandan/index.php 随便提交一个id,看到后台set了两个 ...

  3. CBC翻转攻击(实验吧_简单的登陆题)

    题目链接 http://ctf5.shiyanbar.com/web/jiandan/index.php 有源码在test.php页面 分析代码过程 如果post id,将id转字符串,然后进入sql ...

  4. 密码学系列之:Merkle–Damgård结构和长度延展攻击

    密码学系列之:Merkle–Damgård结构和长度延展攻击 简介 Merkle–Damgård结构简称为MD结构,主要用在hash算法中抵御碰撞攻击.这个结构是一些优秀的hash算法,比如MD5,S ...

  5. [翻译练习]密码学1小时入门 (Everything you need to know about cryptography in 1 hour)

    原文:http://www.daemonology.net/papers/crypto1hr.pdf   [密码学简介]   很多人都误用了密码学   一般可归为三类: 1. 愚蠢 比如Google ...

  6. (转)CBC模式和ECB模式解读

    一 什么是CBC模式 CBC模式的全称是Cipher Block Chaining模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样相互连接在一起. 在CBC模式中,首先将明文分组与 ...

  7. php攻击漏洞总结

    1.两字节编码(gbk)都存在宽字节攻击问题[character_set_client=gbk] 案例:http://www.cnblogs.com/lcamry/articles/5625276.h ...

  8. SSL及GMVPN握手协议详解

    之前写过一篇文章搞懂密码学基础及SSL/TLS协议,主要介绍了加密学的基础,并从整体上对SSL协议做了介绍.由于篇幅原因,SSL握手的详细流程没有深入介绍.本文将拆解握手流程,在消息级别对握手进行详细 ...

  9. BUGKUctf-web-writeup

    ---恢复内容开始--- 找到了个ctf平台.里面的web挺多的.终于将web题目写的差不多了. Web 签到题 加群就可以了 Web2 直接F12就看到了 文件上传测试 Burp抓包 文件名改成 1 ...

随机推荐

  1. [bzoj2432]兔农

    将每一个重置为0的点作为一段,那么它会导致后面为以x x为开头的斐波拿起数列的东西,那么设这一段是以x为开头,要快速转移到下一段,就可以解决这道题目为了转移,我们要处理出下面的东西:1.求出x关于模k ...

  2. [loj3364]植物比较

    结论:设$b_{i}$满足该限制,则$a_{i}$合法当且仅当$\forall i\ne j,a_{i}\ne a_{j}$且$\forall |i-j|<k,[a_{i}<a_{j}]= ...

  3. CSS 基础 - Cascade and Inheritance

    CSS 基础 - Cascade and Inheritance MDN学习笔记:https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Building ...

  4. 洛谷 P3688 - [ZJOI2017]树状数组(二维线段树+标记永久化)

    题面传送门 首先学过树状数组的应该都知道,将树状数组方向写反等价于前缀和 \(\to\) 后缀和,因此题目中伪代码的区间求和实质上是 \(sum[l-1...n]-sum[r...n]=sum[l-1 ...

  5. 睡眠或者重启windows,无法ssh连接或者pingVMware的虚机

    睡眠后无法直接ssh重连VMware主机问题 这个问题我在win8上出现过,win10看了下同事可以正常连,不知道其他有没有问题. 解决方法: 1.关闭vmnet8和vmnet0里面的 npcap 功 ...

  6. 一个好用的快速安装lnmp环境包lnmp1-6

    一个好用的快速安装lnmp环境包lnmp1-6 地址:https://lnmp.org/tag/lnmp1-6/

  7. js判断undefined nan等

    1,js判断undefined 主要用typeof(),typeof的返回值有:undefined,object,boolean,number,string,symbol,function等, if( ...

  8. javaSE中级篇2 — 工具类篇 — 更新完毕

    1.工具类(也叫常用类)-- 指的是别人已经写好了的,我们只需要拿来用就行了 官网网址:Overview (Java Platform SE 8 ) (oracle.com) ---- 但是这个是英文 ...

  9. 一条查询SQL查询语句的执行原理

    先熟悉一下浅而易懂SQL执行的流程图SQL查询过程七步曲 1.查询SQL发送请求 客户端将查询sql按照mysql通信协议传输到服务端.服务端接受到请求后,服务端单起一个线程执行sql 2.判断是否为 ...

  10. Android 高级UI组件(一)GridView与ListView

    1.GridView 1.GridView学习 GridView和ListView都是比较常用的多控件布局,而GridView更是实现九宫图的首选 main.xml: <?xml version ...