Crypto日记之AES-CBC bit翻转攻击

本文通过分析攻防世界的一道题目,深入探讨了AES-CBC模式下的字节翻转攻击。文章详细解释了CBC模式的工作原理,展示了如何通过翻转密文中的特定位来改变解密后明文的特定字符。作者通过实例展示了如何将"admin=0;group=0"修改为"admin=1;group=1",并给出了完整的解决过程,最终成功获取flag,加深了对AES-CBC比特翻转攻击的理解。

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

0x01 前言

攻防世界刷题遇到了一道AES-CBC 字节翻转攻击的题目,CISCN-2018-Quals-intersting。

0x02 题目CISCN-2018-Quals-intersting

下载附件得到了两个文档,一个python脚本和一个heheda.txt的文档,python脚本如下:

import flag
import hashlib
from Crypto.Util.number import getPrime, long_to_bytes, bytes_to_long
from Crypto.Cipher import AES
import random

def gen_iv(seed):
    s=random.Random()
    s.seed(seed)
    while True:
        iv=long_to_bytes(s.randint(0xfffffffffffffffffffffffffffffff,0xffffffffffffffffffffffffffffffff))
        if hashlib.sha256(iv).hexdigest()[0:4]==hashlib.sha256(long_to_bytes(seed)).hexdigest()[0:4]:
            return iv
def gen_password(seed):
    s=random.Random()
    s.seed(seed)
    while True:
        password=long_to_bytes(s.randint(0xfffffffffffffffffffffffffffffff,0xffffffffffffffffffffffffffffffff))
        if hashlib.sha256(password).hexdigest()[4:8]==hashlib.sha256(long_to_bytes(seed)).hexdigest()[4:8]:
            return password
def g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值