数组绕过及php语言的特性

本文探讨了PHP语言中的弱类型特性,特别是数组绕过现象。讲解了`==`和`===`的区别,强调`==`只判断数值相等而忽略类型,而`===`要求数值和类型都相同。同时提到了在PHP中,空字符串、NULL和FALSE虽然值为0,但类型各不相同。NULL作为一种特殊类型,只有在特定情况下才出现。最后,列举了一些可能用于绕过的函数,如md5()、sha1()等,并提醒注意空字符串、NULL和FALSE之间的类型差异。

php
判断相等有两个符号

  1. == 只判断数值是否相等,不管变量类型是什么
  2. === 要求数值,和类型都要相等
    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

  1. $var = NULL;
  2. $var;
  3. “”、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 //一种散列加密方式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值