CBC字节翻转攻击例子

前言

某次玩CTF遇到的题目,记录一下

原理

CBC解密会跟前一组(16字节为一组)进行xor,这样就可以在不知道key的情况下达到修改原文某些字节的目的,但是会造成密文部分字节被破坏,所有有一定局限性。

解题

#-*-coding:utf-8-*-
import base64


'''
    CBC字节翻转攻击例子
    已知密文和原文,要求修改密文中uid=1达到攻击目的。
    
    原文:
    1234567890abcdef1234567890abcdef1234567890abcdef1234567890auid=9;123123123123
    密文(经base64编码):
    9pzE4775q38+wGl/FqNMfFM53Ra6wTKAGUykoeioOjKzlajhqgjsPjGiXVvkFF2BwdywFE67ELLaNuU5yS0kjiuETsjG0Jdk4LiwwBst8ig=
    
    解题:
    原文分成16字符一组
    1234567890abcdef
    1234567890abcdef
    1234567890abcdef
    1234567890auid=9;
    123123123123
'''

enc='9pzE4775q38+wGl/FqNMfFM53Ra6wTKAGUykoeioOjKzlajhqgjsPjGiXVvkFF2BwdywFE67ELLaNuU5yS0kjiuETsjG0Jdk4LiwwBst8ig='

_enc = base64.b64decode(enc)
uid = chr(ord(_enc[16*3-1])^ord('9')^ord('1'))

_enc2list = list(_enc)
_enc2list[16*3-1] = uid
_enc = ''.join(_enc2list)

x_enc = base64.b64encode(_enc)
print x_enc

  

posted on 2019-06-10 10:33  hellotimo  阅读(687)  评论(0编辑  收藏  举报

导航