PHP黑魔法之既是0又是1/switch/$a==0可用.绕过(非数字都可绕过)/PHP://伪协议绕过

1、既是0又是1的情况

$a==1 & $test[$a]=t 时

知识点1)php在处理数字时,如果数字的位数超过 16 位是可以弱等于1的,也就是

var_dump( 9999999999999999999 == 1 );//true

因为当数字位数超过 16 位时,是将该数字转换成了数值为 1 的字符串进行处理

知识点2)在科学计数法中也有种特殊情况,0.1e1 是代表 0.1*10,而 .1e1 代表的也是 0.1*10 ,但在数组中时,由于 . 代表的是字符串,所以会于数组中变成 0 ,于 is_numeric 中有点则正常输出为数字

// 打印数组b下标为0的数据 
echo $b['.1e1'] //输出t

2、switch代码漏洞

当使用 switch 并且没有使用 break 来跳出循环时,代码是会继续往下执行。这属于程序员在编写程序出现的人为漏洞,并不是语言本身的问题。

3、$a==0可用.绕过(非数字都可绕过)

如何使 $a==0 的同时 $a 又为真?

<?php
$a=$_GET['a'],
if ($a==0){
    echo "1";
}
if ($a) {
    echo "must";
}
?>

相关推荐

  1. PHP反序列化漏洞-魔术方法

    2024-05-16 06:18:06       38 阅读
  2. MySQL 运算符

    2024-05-16 06:18:06       4 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-16 06:18:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-16 06:18:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-16 06:18:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-16 06:18:06       20 阅读

热门阅读

  1. Linux系统安装MongoDB流程

    2024-05-16 06:18:06       11 阅读
  2. mysql入门与mongoDB入门

    2024-05-16 06:18:06       12 阅读
  3. Docker学习(10)搭建kubernetes集群

    2024-05-16 06:18:06       12 阅读
  4. 基于C++的OpenCV支持的KCF目标跟踪

    2024-05-16 06:18:06       14 阅读
  5. MongoDB聚合运算符:$zip

    2024-05-16 06:18:06       9 阅读
  6. Jetpack Compose 初探

    2024-05-16 06:18:06       15 阅读
  7. 在ubuntu安装Docker容器

    2024-05-16 06:18:06       10 阅读
  8. WebApp 使用post-css实现移动端适配

    2024-05-16 06:18:06       14 阅读
  9. 15. 三数之和

    2024-05-16 06:18:06       11 阅读
  10. docker版MySQL5.7重置root密码并授权localhost访问

    2024-05-16 06:18:06       10 阅读