<?php$str1 = 's878926199a';$str2 = 's214587387a'; echo json_encode([ 'md5_str1' => md5($str1), 'md5_str2' => md5($str2), 'bool' => md5($str1) == md5($str2)]);結果兩個值加密後竟然相等。
缺點你懂的,如果一個網站的某個用戶密碼加密後剛好是0e開頭的,這個時候黑客過來破解,很容易就攻入了。
{ md5_str1: "0e545993274517709034328855841020", md5_str2: "0e848240448830537924465865611904", bool: true}is_numeric漏洞會忽視0x這種十六進位的數
容易引發sql注入操作,暴漏敏感信息
echo json_encode([ is_numeric(233333), is_numeric('233333'), is_numeric(0x233333), is_numeric('0x233333'), is_numeric('233333abc'),]);結果如下:
16進位數0x61646D696EASII碼對應的值是admin。
如果我們執行了後面這條命令的話:SELECT * FROM tp_user where username=0x61646D696E,結果不言而喻
[ true, true, true, false, false]in_array漏洞in_array中是先將類型轉為整形,再進行判斷。
PHP作為弱類型語言,類型轉換的時候,會有很大漏洞。
轉換的時候,如果將字符串轉換為整形,從字符串非整形的地方截止轉換,如果無法轉換,將會返回0。
<?phpvar_dump(in_array("2%20and%20%", [0,2,3]));結果如下:
switch漏洞switch中是先將類型轉為整形,再進行判斷。
PHP作為弱類型語言,類型轉換的時候,會有很大漏洞。
轉換的時候,如果將字符串轉換為整形,從字符串非整形的地方截止轉換,如果無法轉換,將會返回0。
<?php$i ="abc";switch ($i) { case 0: case 1: case 2: echo "i是比3小的數"; break; case 3: echo "i等於3";}結果如下:
i是比3小的數。
intval強轉漏洞PHP作為弱類型語言,類型轉換的時候,會有很大漏洞。
轉換的時候,如果將字符串轉換為整形,從字符串非整形的地方截止轉換,如果無法轉換,將會返回0。
<?phpvar_dump(intval('2')); var_dump(intval('3abcd')); var_dump(intval('abcd'));*聲明:本文於網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯繫我們刪除或授權事宜