一、數字與字串之間的比較
var_dump(0
=="a");
true
var_dump
("0"
=="a");
false
php把字母開頭的字串轉化為整型時,轉化為0, 前面數字後面字母的話就只取到第乙個字母出現的位置之前的數字。
二、md5函式漏洞
$_get
['name']!=
$_get
['password'
]md5
($_get
['name'])
==md5
($_get
['password'
])
if
($_post
['param1'
]!==
$_post
['param2']&&
md5(
$_post
['param1'])
===md5
($_post
['param2'])
)
在php中=為完全等於運算,不僅比較值,而且還比較值的型別,只有兩者一致才為真。再次使用a=qnkcdzo&b=240610708就不行了,因為a和b型別不同
而在php中
md5([1,2,3]) == md5([4,5,6]) == null
[1] ! [2] && md5([1]) === md5([2])
所以get傳入a=1&b=2就能夠繞過了
四、md5碰撞
if
((string)
$_post
['param1'
]!==
(string)
$_post
['param2']&&
md5(
$_post
['param1'])
===md5
($_post
['param2'])
)
要求構造param1和param2不同,但是md5相同,也就是說要求傳入兩個md5相同的不同字串。
param1=%4d
%c9%
68%ff%
0e%e3%5c%
20%95%
72%d4%77%
7b%72%
15%87%d3%
6f%a7%b2%
1b%dc%
56%b7%4a%
3d%c0%78%
3e%7b%
95%18%af%bf%a2%
00%a8%28%
4b%f3%6e%
8e%4b%
55%b3%5f%
42%75%
93%d8%49%
67%6d%a0%d1%55%
5d%83%
60%fb%5f%
07%fe%a2
param2=%4d
%c9%
68%ff%
0e%e3%5c%
20%95%
72%d4%77%
7b%72%
15%87%d3%
6f%a7%b2%
1b%dc%
56%b7%4a%
3d%c0%78%
3e%7b%
95%18%af%bf%a2%
02%a8%28%
4b%f3%6e%
8e%4b%
55%b3%5f%
42%75%
93%d8%49%
67%6d%a0%d1%d5%5d%
83%60%fb%5f%
07%fe%a2
PHP md5函式 的16位字元亂碼問題解決
php的md5函式用於對字串引數進行md5運算,該函式有兩個引數 md5 string str bool raw output false string 第乙個引數是輸入字串 第二個引數預設為false,設定為true時可以輸出16位的md5值。預設情況下,md5 string str 會返回 32...
php漏洞 md5函式漏洞
0x01 背景 php在處理雜湊值時,用 和 來比較的時候,如果雜湊字串以0e開頭的時候,雜湊值會預設為0,所以兩個不同的字串經過md5加密成雜湊值,如果雜湊值開頭是0e的話,會預設成相等.2.當md5遇到陣列的話,會返回null,null null的時候,直接相等了 0x02 copy了一些其他大...
5C 暴庫漏洞
的unicode是 5c,主要就是暴庫漏洞 那麼,我看到下面四種情況 1,直接暴庫,解決方法在conn.asp中加入on error resume next duoluo.webdream dlog 5cshowlog.asp?cat id 16 log id 444 2,不顯示任何資訊,原因已打入...