php MD5 函式漏洞

2021-10-03 06:37:38 字數 1967 閱讀 1912

一、數字與字串之間的比較

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,不顯示任何資訊,原因已打入...