漏洞原理---PHP特性&缺陷对比函数

# PHP 特性 & 缺陷 & 过滤函数

# 一、常见过滤函数

  • =

    • =:赋值

    • ==:弱类型对比

    • ===:类型也会对比

    • <?php
      $flag = "欢迎吃瓜~~~~";
      $String = "^_^";
      $error = "Waring !!!!";
      if($_GET['name'] != $_GET['password']){
          if(MD5($_GET['name']) == MD5($_GET['password'])){
              echo $flag;
          }else{
              echo $String;
          }
      }else{
          echo $error;
      }
      
      // name = QNKCDZO           0E830400451993494058024219903391
      // Password = 240610708     0E462097431906509019562988736854
      
      <?php
      $flag = "欢迎吃瓜~~~~";
      $String = "^_^";
      $error = "Waring !!!!";
      if($_GET['name'] != $_GET['password']){
          if(MD5($_GET['name']) === MD5($_GET['password'])){
              echo $flag;
          }else{
              echo $String;
          }
      }else{
          echo $error;
      }
      
    • image-20230308230823166

    • image-20230308231124204

  • md5

  • intval

  • strpos

    • 可以使用 %0a 绕过
  • in_array

    • 问题出现在第三个参数上,如果不设置为 true,则函数不会检查数据与数组的值类型是否相同
  • preg_match

    • 数组绕过
    • 换行绕过
  • str_replace

  • 可以使用双写绕过,比如: x=texttext


漏洞原理---PHP特性&缺陷对比函数
https://rofgd.github.io/2022/10/14/漏洞原理---PHP特性-缺陷对比函数/
作者
ReadPond
发布于
2022年10月14日
许可协议