今天同事分享了一道题目,比较有意思
<?php
$a = @$_GET['a'];
$md51 = md5('QNKCDZO');
$md52 = md5($a);
if (isset($a)) {
if ($a != 'QNKCDZO' && $md51 == $md52) {
echo 'success';
} else {
echo 'fail';
}
} else {
echo 'please input a';
}
得到的答案是:
php中==如果判断的两个变量是string,同时以数字开头,那么只要在第一个非数字之前的全部数字都相等,就为true
本着求是的态度,写了几个测试:

image.png

image.png

image.png
发现好像并不是答案所说那样,而是跟e有点关系,继续跑了几个简单测试,发现只有0e开头,后面跟纯数字的才会出现这种情况,于是上网搜了搜答案,看到了这篇文章【CTF】PHP Hash漏洞(关于0e开头的md5值),得到正确答案(答案中说0e开头的就会出现,实验发现并不是,只有0e开头后面跟纯数字才会出现这种情况)
以此记录,实践才是检验真理的唯一标准,一定要牢记啊~