源码
<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 16:46:19
# @link: https://ctfer.com
*/
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;
}
}
思路
if(!strpos($num, "0")){
die("no no no!");
}
如果不出现0的话会返回-1,第一个为0的话会返回0,都会die
根据这张图,我们可以用.0来绕过
在第一层就是 int 4476 === float 4476.0, 肯定不相等
而在intval函数里,4476.0会被转换成int,所以会相等
题解
`num=4476.0`总结
水题