zoukankan      html  css  js  c++  java
  • PHP常见绕过(更新ing)

    弱类型比较

    ===: 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
    ==: 在进行比较的时候,会先将字符串类型转化成相同,再比较,如果比较的是一个字符串和一个数字,则字符串会被转化为数值。

    # 例题:
    $v1 = _GET('v1');
    $v2 = _GET('v2');
    if($v1!=$v2 && md5($v1)==md5($v2){
        echo $flag;
    }
    解决方案1:利用弱类型比较  
    字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则使用该数值,否则其值为0。若以xe  
    方式开头则按照科学计数法转化。  
    $v1=240610708,$v2=QNKCDZO,这两个参数不相等;
    
    md5(’240610708′) 的结果是:0e462097431906509019562988736854
    
    md5(‘QNKCDZO’) 的结果是:0e830400451993494058024219903391     
    
    弱类型比较时都转换为0,则判断相等。  
      
    解决方案2:利用md5()函数的特点。  
    md5()函数加密一个数组时会报错,返回null。  
    因此,只要另$v1,$v2为两个值不同的数组即可绕过。
    即url传入:v1[]=1 && v2[]=2
    
    strcmp()函数绕过

    strcmp()函数用来判断两个字符串是否相等,若相等,返回0。php在5.3版本之前若传入的是一个非字符串类型数据,比如数组和对象,则会报错,但在报错的同时会返回0。

    # 例题:
    $v = _GET['v'];
    if(!strcmp($v,$flag){
        echo $flag;
    }
    解决方案
    url传入:v[]=1
    
  • 相关阅读:
    SQL SERVER 2008 获取当前月,当前月前一月,当前月后一月
    SQL SERVER 2008 获取当前月,当前月前一月,当前月后一月
    SQL重复记录查询的一些方法
    TSQL日期处理总结
    50种方法巧妙优化SQL Server数据库
    DAMMIF
    CRYSOL
    Damaver
    DAMMIN
    AutoMerge
  • 原文地址:https://www.cnblogs.com/Jie-Fei/p/9886591.html
Copyright © 2011-2022 走看看