zoukankan      html  css  js  c++  java
  • PHP弱类型总结

    0x01:“==”和“===”

    PHP中有两种比较符号,“==”与“===”。“==”我们称之为等值符,当等号两边为相同类型时,直接比较值是否相等;当等号两边类型不同时,先转换为相同的类型,再对转换后的值进行比较,如果比较一个数字和字符串或者涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照常数值进行比较。

    <?php
    var_dump("admin"==0);  //true
    var_dump("1admin"==1); //true
    var_dump("admin1"==1) //false
    var_dump("admin1"==0) //true
    var_dump("0e123456"=="0e4456789"); //true 
    ?> 
    当一个字符串欸当作一个数值来取值,其结果和类型如下:如果该字符串没有包含'.','e','E'并且其数值值在整形的范围之内
    该字符串被当作int来取值,其他所有情况下都被作为float来取值,该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0
    0x02:"array_search"与is_array"绕过
    is_array:判断传入的是不是一个数组,array_search(x,$数组):在数组中寻找与指定值(x)相等的值,array_search函数
    类似于"==",会进行类型的转换
    <?php
    if(!is_array($_GET['test'])){exit();}
    $test=$_GET['test'];
    for($i=0;$i<count($test);$i++){
        if($test[$i]==="admin"){
            echo "error";
            exit();
        }
        $test[$i]=intval($test[$i]);
    }
    if(array_search("admin",$test)===0){
        echo "flag";
    }
    else{
        echo "false";
    }
    ?>
    在上面的栗子中,我们可以传入test[]=0来进行绕过,首先test是一个数组,符合is_array的判断,然后test=0;在array_search中0==admin为true,绕过了array_search。

    0x03:strcmp漏洞绕过
    strcmp是比较两个字符串,str1<str2,返回<0,str1>str2,返回>0,相等时返回等于0
     1 <?php
     2     $password="***************"
     3      if(isset($_POST['password'])){
     4 
     5         if (strcmp($_POST['password'], $password) == 0) {
     6             echo "Right!!!login success";n
     7             exit();
     8         } else {
     9             echo "Wrong password..";
    10         }
    11 ?>
    上述代码中要求我们post一个password值,要与给定的password变量的值相等,但我们不知道password变量的值是什么!这怎么办呢?
    stamp期望传入的值是字符串类型,但如果我们传入数组类型会怎么样呢?
    我们传入 password[]=xxx 可以绕过 是因为函数接受到了不符合的类型,将发生错误,但是还是判断其相等

    (ps:本人太菜,若有错误的地方欢迎大佬随时责骂。。。。xixixii)
  • 相关阅读:
    新居博客园
    关于 php mysql pdo cannot find driver 解决方案
    centos 升级 python后 python-setuptools pip 安装依赖报错
    php解密java的DES加密
    关于jquery html()方法获取带有OBJECT标签的元素内容时,出现“类型不匹配。”的解决办法
    文字过长 用 ... 表示 CSS实现单行、多行文本溢出显示省略号
    PhpStorm WebMatrix xDebug 配置开发环境
    IntelliJ IDEA自用快捷键 转载
    我的团队开发活动
    mysql常用总结
  • 原文地址:https://www.cnblogs.com/liangshian/p/10925792.html
Copyright © 2011-2022 走看看