PHP数组绕过

PHP弱类型和强类型

php是一种弱类型语言,对数据的类型要求并不严格,可以让数据类型互相转换

php其中的两种比较符号:

==:先将字符串类型转化成相同,再比较(松散比较 只比较值,不比较数据类型)

===:先判断两种字符串的类型是否相等,再比较

(若字符型值开头为数字,转为数字;若开头不为数字,为 null 弱比较与 0 相等。)

''abc123''==123 => false
''abc123''==0 => true
"123abc"==123 => true

php中强类型比较:是指使用全等运算符(===)进行比较时,进行严格的类型和值比较。

只有当两个操作数的类型和值完全相等时,才会返回true,否则返回false                       
原文链接:https://blog.csdn.net/lc3016/article/details/134706796

对于php强比较和弱比较:md5(),sha1()函数无法处理数组,如果传入的为数组,会返回NULL,两个数组经过加密后得到的都是NULL,也就是相等的。

数组绕过

intval() 转换数组类型时,不关心数组中的内容,只判断数组中有没有元素,有为1无为0

e.g三种数组写法:

 $a[]=1;
 $a=array(1,2);
 $a=[1,2];

但在传参时一般使用第一种形式,经过测试发现,传参默认都是字符串类型

根据intval的字符串转换规则,如果字符串第一个字符不是数字就会直接返回0,所以后面两种形式都是返回0,只有第一种可以正确返回数字1。
                       
原文链接:https://blog.csdn.net/krafcc/article/details/134173212

栗子

include “flag.php”: include 语句包含并运行指定文件(其中包含flag.php)

$_GET: get传参了一个my_parameter

isset: 检测变量是否设置,并且不是 NULL(空)

preg_match : 执行一个正则表达式(匹配含0-9的任意数)

die() 函数输出(error!),并退出当前脚本

eval() 函数把字符串按照 PHP 代码来计算。

intval() 函数获取变量的「整数值」常用于强制类型转换

#正常get传参

#使用数组绕过 /?my_parameter[]=1

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值