中山大學招新賽-fake md5 collision
阿新 • • 發佈:2019-02-10
fake md5 collision
時間:2018年9月28日 彙報人:王禕潔
題目
Writeup
一看這架勢,先檢視頁面原始碼,尋找兩個輸入框之間的關係:
通過這個關係進行flag的獲取,先嚐試初步輸入a,b後的情況:
發現可以在位址列動手腳:
![4](C:\Users\1216\CTF\小白日常學習總結(2018.07.24-\Web\中山大學招新賽\fake md5 collision\4.PNG)
答案就出來了!
- 那麼問題來了,為啥要將a,b轉化為陣列形式?
- 分析程式碼邏輯,發現GET了兩個欄位name和password,獲得flag要求的條件是:name != password & sha1(name) == sha1(password),乍看起來這是不可能的,其實可以利用sha1()函式的漏洞來繞過。如果把這兩個欄位構造為陣列,如:?name[]=a&password[]=b,這樣在第一處判斷時兩陣列確實是不同的,但在第二處判斷時由於sha1()函式無法處理陣列型別,將報錯並返回false,if 條件成立,獲得flag。
這裡連結一道題:實驗吧的FALSE
- ps:各位有沒有想過題目為何叫FALSE?sha1和md5函式在計算摘要的時候,不能處理陣列型別的資料,處理這種型別的資料,會報錯,併產生false
以及兩篇部落格: