相信大家都知道,sha1函數和md5都是哈希編碼的一種,在PHP中,這兩種編碼是存在繞過漏洞的。
PHP在處理哈希字符串時,會利用”!=”或”==”來對哈希值進行比較,它把每一個以”0E”開頭的哈希值都解釋為0,所以如果兩個不同的密碼經過哈希以后,其哈希值都是以”0E”開頭的,那么PHP將會認為他們相同,都是0。
因此我們只需要傳入開頭都是0E的兩個值,便可成功繞過。
例如這個代碼(sha1($_GET['uname']) === sha1($_POST['passwd'])
只需構造uname[]=1和passwd[]=2便可成功繞過。
另外md5是無法對數組進行處理的,如果存在md5判斷相等可以傳入數組來進行繞過。