今天也是來解一題,gogo,需要一點昨天CBC decrypt的基礎知識,就知道它在幹嘛這樣╰(°▽°)╯
網址 : https://cryptohack.org/courses/symmetric/flipping_cookie/
這題會用到一個叫做"bit flipping"的攻擊手法
這我看了好多但觀念還是有點模糊,所以不多做解釋,
請自行去找自己覺得看得懂的解釋XD
等我哪一天突然懂了再回來改( •̀ ω •́ )✧
由圖可得知
p1 = iv ^ d(c1)
-> d(c1) = p1 ^ iv
而我們能改的是值iv
所以接下來我們的目的為
更改iv值,讓
new_iv ^ d(c1) = "admin=True;00000"
設 "admin=True;00000" = new_p1
new_p1 = new_iv ^ d(c1)
-> new_iv = new_p1 ^ d(c1)
把最d(c1) = p1 ^ iv 代入
-> new_iv = new_p1 ^ p1 ^ iv
-> new_iv = "admin=True;00000" ^ "admin=False;expi" ^ iv
就可以來寫code了!
ciphertext 為網站按下get_cookie那邊的submit得出來的
from pwn import *
ciphertext = "f4f87ca5e728039e47038e2bdd4df1132e9215c89e8f80d2b8e10029438954ab608fb612156b5e3777c33b7974814f34"
iv = ciphertext[:32]
new_p1 = "admin=True;00000"
p1 = "admin=False;expi"
new_iv = xor(bytes.fromhex(iv), new_p1.encode(), p1.encode()).hex()
print(ciphertext[32:])
print(new_iv)
之後在網站輸入,即可獲得flag
flag : crypto{4u7h3n71c4710n_15_3553n714l}
利用xor的特性解題
這篇未來會再修,等我更了解它後再回來XD