web95 比较麻烦的interval绕过

审计
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
    $num = $_GET['num'];
    if($num==4476){
        die("no no no!");
    }
    if(preg_match("/[a-z]|\./i", $num)){
        die("no no no!!");
    }
    if(!strpos($num, "0")){
        die("no no no!!!");
    }
    if(intval($num,0)===4476){
        echo $flag;
    }
} 
ctfshow{cd5a9c29-1e5f-4e84-8d66-6b2061f0eda4}
payload:+010574 八进制;+0x117c 十六进制 值得注意的是interval的base参数如果自己写上去的话,你输入16或者8进制内容他会给你转换 但是如果你不输入,也就是让他默认的方式执行的话他就只会返回0,如下图

image

image

posted @ 2024-04-07 19:00  WSssSW  阅读(6)  评论(0编辑  收藏  举报