示例代码:

if (md5($_POST['md51']) == md5($_POST['md52']) && $_POST['md51'] != $_POST['md52'])

弱类型绕过

PHP在处理哈希字符串时,会把每一个0E开头的哈希值解释为0,所以若两个不同密码进行哈希后以0E开头,则会被认为值均为0,从而判等。

md5加密后开头为0E的值:

QNKCDZO

240610708

s878926199a

s155964671a

s214587387a

s214587387a

以示例代码为例,分别给md51md52赋表中不同的值。经过md5加密后,值均为0,而原始值又不同,顺利绕过if判断。

数组绕过

md5()函数无法处理数组,会对传入的数组返回NULL,即数组经过md5加密后均得到NULL

我们仅需传入如下数据即可,数组内容随意:

md51[]=1&md52[]=2

文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。