cbc位反转攻击

本文详细介绍了如何利用CBC位反转攻击解决一道安全挑战。通过代码审计,发现输入字符串不同会触发不同的处理路径,包括加密和解密过程。在未知初始向量和密钥的情况下,利用CBC模式下的DES加密特性,通过位反转来破解。解题步骤包括发送特定字符串获取密文,处理密文使其解密出特定明文,最终获得flag。提供的脚本辅助理解攻击过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、首先进行交互,看看会发生什么,随便输入点东西,会发现接收到一堆东西,猜测应该是密文。
在这里插入图片描述
2、对出题人发布的部分题目源码进行代码审计,发现如下问题
(1)根据输入的的字符串不同,会有三条路走,之前随便输入的字符串,走的是第三条路。
在这里插入图片描述
还有两条路是:如果输入字符串以“getapikey:”开头,则会对字符串进行加密;如果输入字符串以“getflag:”开头,则会对字符串进行解密,而且如果(parse_profile(data)==1),则会输出flag;
(2)对字符串加密时,会在输入的字符串前后加一些东西,而且输入的字符串中不能有“;”,如下图所示。
在这里插入图片描述
(3)加密方式是cbc模式下的des加密,我们不知道初始向量,不知道密钥,那么就自然想到用位反转来破解。
在这里插入图片描述
(4)那么我们需要位反转什么呢?再来看一下下面这部分代码。
在这里插入图片描述
也就是说,如果在解密出来的明文中含有“;admin=true”,就会发送flag。
(5)那么解题思路就出来了
①首先发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值