CTF中常见的php函数绕过(保持更新)

is_numeric()用于判断是否是数字,通常配合数值判断

is_numeric(@$a["param1"])?exit:NULL;
if(@$a["param1"]){
    ($a["param1"]>2017)?$v1=1:NULL;
}
//param1不能是数字,但又要比2017大,利用数组
$pos = array_search("nudt",$a["param2"]);
$pos ==false?die("nope"):NULL;
foreach($a["param2"] as $key=>$val){
        $val==="nudt"?die("nope"):NULL;
    }

//param2中需要匹配到nudt然而是弱类型,0==任何字符串,用0可以过掉弱类型检查字符串
eregi存在\x00截断的问题
strcmp的检查可以利用数组过掉,因为PHP内置函数的松散性,数组与字符串比较会返回null,可看做false
sha1([])md5([])处理数组不会报错,直接返回false

你可能感兴趣的:(ctf,PHP)