php
判断相等有两个符号
- == 只判断数值是否相等,不管变量类型是什么
- === 要求数值,和类型都要相等
php是一门弱语言
比如
<?php
$a=12345;
$b='12345hahahaha';//这个字符串可以看成是整数12345,同样字符串'abcdef' 可以看成整数 0
$a==$b ;
$a!===$b;
数组绕过
现在知道的有这么多,以后还可以补,不会的时候可以蒙一发。
md5(),sha1(),strpos(),ereg(),strcmp()
如果传入md5函数的参数为数组类型,则返回null
null===null 时可以通过数组可以绕过 === md5判断
注意啊,空字符串和NULL,false都是以值为0存储的,但是空字符串的类型是string,NULL的类型是NULL,false是boolean。
NULL是一种特殊的类型.
两种情况下为NULL
- $var = NULL;
- $var;
- “”、0、“0”、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的
strcmp("foo", array()) => NULL + PHP Warning
strcmp("foo", new stdClass) => NULL + PHP Warning
strcmp(function(){}, "") => NULL + PHP Warning
ereg函数的漏洞 :
存在%00截断(已被preg_match()替代)
输入参数为数组时返回值为null
sha1(array()) = null //一种散列加密方式
本文探讨了PHP语言中的弱类型特性,特别是数组绕过现象。讲解了`==`和`===`的区别,强调`==`只判断数值相等而忽略类型,而`===`要求数值和类型都相同。同时提到了在PHP中,空字符串、NULL和FALSE虽然值为0,但类型各不相同。NULL作为一种特殊类型,只有在特定情况下才出现。最后,列举了一些可能用于绕过的函数,如md5()、sha1()等,并提醒注意空字符串、NULL和FALSE之间的类型差异。
1199

被折叠的 条评论
为什么被折叠?



