• CTF---PHP安全考题


    1.弱类型比较

    参考 https://www.cnblogs.com/Mrsm1th/p/6745532.html

    php中有两种比较的符号 == 与 ===

    1 <?php
    2 $a = $b ;
    3 $a===$b ;
    4 ?>

    === 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较

    == 在进行比较的时候,会先将字符串类型转化成相同,再比较

    如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行

    这里明确了说如果一个数值和字符串进行比较的时候,会将字符串转换成数值

    复制代码
    1 <?php
    2 var_dump("admin"==0);  //true
    3 var_dump("1admin"==1); //true
    4 var_dump("admin1"==1) //false
    5 var_dump("admin1"==0) //true
    6 var_dump("0e123456"=="0e4456789"); //true 
    7 ?>  //上述代码可自行测试
    复制代码
    1 观察上述代码,"admin"==0 比较的时候,会将admin转化成数值,强制转化,由于admin是字符串,转化的结果是0自然和0相等
    2 "1admin"==1 比较的时候会将1admin转化成数值,结果为1,而“admin1“==1 却等于错误,也就是"admin1"被转化成了0,为什么呢??
    3 "0e123456"=="0e456789"相互比较的时候,会将0e这类字符串识别为科学技术法的数字,0的无论多少次方都是零,所以相等

    2.preg_match()函数

    实例

    查找文本字符串"php":

    <?php
    //模式分隔符后的"i"标记这是一个大小写不敏感的搜索
    if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
        echo "查找到匹配的字符串 php。";
    } else {
        echo "未发现匹配的字符串 php。";
    }
    ?>

    执行结果如下所示:

    查找到匹配的字符串 php

    查找单词 "web"

    <?php
    /* 模式中的  标记一个单词边界,所以只有独立的单词"web"会被匹配,而不会匹配
     * 单词的部分内容比如"webbing" 或 "cobweb" */
    if (preg_match("/web/i", "PHP is the web scripting language of choice.")) {
        echo "查找到匹配的字符串。
    ";
    } else {
        echo "未发现匹配的字符串。
    ";
    }
     
    if (preg_match("/web/i", "PHP is the website scripting language of choice.")) {
        echo "查找到匹配的字符串。
    ";
    } else {
        echo "未发现匹配的字符串。
    ";
    }
    ?>

    执行结果如下所示:

    查找到匹配的字符串。
    未发现匹配的字符串。

     

  • 相关阅读:
    windows 安装mongodb数据库
    shell 编程实战
    利用DNAMAN和clusterx绘制序列比对图片
    json与python对象互转
    python:向mongodb中储存数据
    python中登录mongoDB
    如何绘制漂亮的多序列比对图片
    python爬虫的基本框架
    fastqc
    转录与翻译
  • 原文地址:https://www.cnblogs.com/trevain/p/14272341.html
Copyright © 2020-2023  润新知