示例代码:
if (md5($_POST['md51']) == md5($_POST['md52']) && $_POST['md51'] != $_POST['md52'])
弱类型绕过
PHP
在处理哈希字符串时,会把每一个0E
开头的哈希值解释为0,所以若两个不同密码进行哈希后以0E
开头,则会被认为值均为0,从而判等。
md5
加密后开头为0E
的值:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
以示例代码为例,分别给md51
和md52
赋表中不同的值。经过md5
加密后,值均为0,而原始值又不同,顺利绕过if
判断。
数组绕过
md5()
函数无法处理数组,会对传入的数组返回NULL
,即数组经过md5
加密后均得到NULL
。
我们仅需传入如下数据即可,数组内容随意:
md51[]=1&md52[]=2
文章许可:本文采用CC BY-NC-SA 4.0许可协议,转载请注明出处。