@jajabin

Как осуществить атаку Bit-Flipping на AES-CBC?

Выполняю задание с root-me.org, как понимаю из формулировки атаки, необходимо произвести байтовый сдвиг для получение is_member=true Почитав некоторые инструкции, я дополняю сообщение блоком и соответственно делаю xor с предыдущим, но при сдаче токена следующий вывод дешифровки
b'[id=546815648;name=iziziz;is_member=false;mail=blablacar;pad=00]r\xe5\xf2\x1dM\xa5\xcae\xff\x16\xa2\xc6\xbe\xd8~I'

Подскажите, что я мог упустить, мой код:
var TOKEN = 
"IRZjBh6GxjeYI7YZvxwfBHmxjY+Wd7bPr7s73wWwLHKaR+N8fPDIjT8/AlUIDSzniMgqCV9bJArQbec64kPYXQ=="

// [id=546815648;name=iziziz;is_member=false;mail=blablacar;pad=00]
func main() {
    //block 16
    tokenHex, err := base64.StdEncoding.DecodeString(TOKEN) // lenght 64
    if err != nil {
        log.Fatal(err)
    }
    block := 16
    for i := 0; i < len(tokenHex); i += block {
        fmt.Println(tokenHex[i : i+block])
    }

    tmp := make([]byte, block)
    for i := 0; i < block; i++ {
        tmp[i] = byte('a')
    }
    tokenHex = append(tokenHex,tmp...)
    expected := []byte(`;is_member=true]`)
    //last block
    current := []byte{136 ,200 ,42 ,9 ,95 ,91, 36, 10 ,208 ,109, 231, 58, 226, 67 ,216, 93}
    for i := 0; i < 16; i++ {
        xor := expected[i] ^ current[i]
        tokenHex[64+i] ^= xor
    }
    fmt.Println(base64.StdEncoding.EncodeToString(tokenHex))
}
  • Вопрос задан
  • 242 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы