PHP MD5強碰撞


MD5強碰撞

搬得這個師傅的 https://www.cnblogs.com/kuaile1314/p/11968108.html

可以看到,使用了三個等號,這個時候PHP會先檢查兩邊的變量類型,如果不相等直接返回False。

數組

param1: aaa[]
param2: bbb[] 
param1[]=111&param2[]=222

這個時候md5讀入兩個數組的時候,因為無法解析數組內容,都會讀入一個常量字符串“array”,故兩個參數md5相同。

科學計數法

0e開頭的數字會被解析成科學計數法。
1e12 ---> 1 * 10^12
0e開頭的意思自然就都會解析成0。
我們只需要找兩個字符串,讓其md5后開頭兩個字母是0e即可,如有需要,這兩個字符串本身也可以是0e開頭。

param1=QNKCDZO&param2=aabg7XSs

真實碰撞

就是開頭題目上的,將post進去的參數轉為string類型,沒有辦法再用數組和科學計數法的方法,所以只能使用真實的碰撞。

a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

因為存在不可見字符,沒辦法復制到url,所以采用url編碼。這兩個字符串只在末尾的地方有一點點差別,最后算出來的md5值是相同的,即真實碰撞。研究了半天不太清楚咋來的,姑且先記着。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM