護網杯一道crypto

來源:互聯網
上載者:User

標籤:部落格   怎麼   dom   lag   int   bit   rand   比賽   左右   

 1 import os 2 def xor(a,b): 3     assert len(a)==len(b) 4     c="" 5     for i in range(len(a)): 6         c+=chr(ord(a[i])^ord(b[i])) 7     return c 8 def f(x,k): 9     return xor(xor(x,k),7)10 def round(M,K):11     L=M[0:27]12     R=M[27:54]13     new_l=R14     new_r=xor(xor(R,L),K)#先將前27和後的27異或 然後將得到的27 位再跟k異或15     return new_l+new_r#將new_r和new_l拼接起來16 def fez(m,K):17     for i in K:18         m=round(m,i) #一輪輪下去19     return m20 21 K=[]22 for i in range(7):23     K.append(os.urandom(27))24 m=open("flag","rb").read()25 assert len(m)<5426 m+=os.urandom(54-len(m)) #不夠還得補27 28 test=os.urandom(54)29 print test.encode("hex")30 print fez(test,K).encode("hex")31 print fez(m,K).encode("hex")

剛剛開始想了好久都沒想出k是怎麼求出來的,最後看了大佬的wp,豁然大悟,原來是消去k。

不過。。。就算這樣也搞不出來,看了好久wp才弄明白。

首先,我把一個的過程給寫了下來,進行猜想:

 1 fR7=xor(xor(fL6,fR6),k) 2 fL7=fR6 3 fR7=xor(xor(fL5,fR5),k) 4 fL6=fR5 5 fR5=xor(xor(fL4,fR4),k) 6 fL5=fR4 7 fR4=xor(xor(fL3,fR3),k) 8 fL4=fR3 9 fR3=xor(xor(fL2,fR2),k)10 fL3=fR211 fR2=xor(xor(fL1,fR1),k)12 fL2=fR113 fR1=xor(xor(fL0,fR0),k)14 fL1=fR0

另一邊也一樣的,當到最後的時候tL0和tR0是已知,但要記住,從下往下迴歸的時候,左右會交換了。

最後發現:

tL7^fL7=tL0^fL0

所以可以將

fL0=tL7^fL7^test[27:54]

這樣就能求出另一邊了。另一邊,也差不多,想方法求得帶有fR0^tR0的項,再異或

test[0:27]

就出來了。

下面還有一種大佬的方法:

(tR7^R7)^(tL7^L7)=fL6^tL6(tR6^R6)^(tL6^L6)=fL5^tL5(tR5^R5)^(tL5^L5)=fL4^tL4(tR4^R4)^(tL4^L4)=fL3^tL3(tR3^R3)^(tL3^L3)=fL2^tL2(tR2^R2)^(tL2^L2)=fL1^tL1(tR1^R1)^(tL1^L1)=fL0^tL0

 

再有:

fR7=fR6tR7=tR6

就能湊出

(tR6^R6)^(tL6^L6)

之後就能一步一步往下走:就能求出 tL0^fL0 和fL0^tL0

最後給出大佬的部落格,大佬真的是厲害。

https://qingchenldl.github.io/2018/10/13/%E6%8A%A4%E7%BD%91%E6%9D%AFWP-BitPwn/

 

這次比賽真的讓我自閉了。

護網杯一道crypto

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.