天網你敢來挑戰嘛
格式:ctf{ }
解題鏈接: http://ctf5.shiyanbar.com/10/web1/
打開鏈接后,嗯,光明正大的放出賬號密碼,肯定是登不進的,查看源代碼
看來是和md5碰撞有關的了,
PHP在處理哈希字符串時,會利用”!=”或”==”來對哈希值進行比較,
它把每一個以”0E”開頭的哈希值都解釋為0,所以如果兩個不同的密碼經過哈希以后,
其哈希值都是以”0E”開頭的,那么PHP將會認為他們相同,都是0。
攻擊者可以利用這一漏洞,
通過輸入一個經過哈希后以”0E”開頭的字符串,即會被PHP解釋為0,
如果數據庫中存在這種哈希值以”0E”開頭的密碼的話,他就可以以這個用戶的身份登錄進去,
盡管並沒有真正的密碼。
0e開頭的md5和原值:
(加密后值為0)
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
我們隨便選一個,將用戶名改為s878926199a
將url改為該地址,進入后審計代碼
$unserialize_str = $_POST['password'];
$data_unserialize = unserialize($unserialize_str); #unserialize() 對單一的已序列化的變量進行操作,將其轉換回 PHP 的值。
if($data_unserialize['user'] == '???' && $data_unserialize['pass']=='???') { print_r($flag); }
偉大的科學家php方言道:成也布爾,敗也布爾。 回去吧騷年
