<?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-18 16:06:11
# @email: h1xa@ctfer.com
# @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(intval($num,0)===4476){
echo $flag;
}else{
echo intval($num,0);
}
}
--intval()
函数用于获取变量的整数值
题目中num的值不等于4476并且intval之后等于4476
利用弱比较,?num=4476a不满足===,并且intval之后为4476
也可以/?num=4476.1
还可以/?num=0x117c
--intval()函数性质:
除非 var 参数是字符串,否则 intval() 的 base 参数不会有效果。
例子:
<?php
intval('42', 8); // => 34
intval(42, 8); // => 42 !
?>
说明:当第一个参数为字符串时,第二个参数是指定第一个参数的进制,比如intval("12",5)就是把“12”当成5进制的数,然后把这个5进制的数转换成10进制整数,并返回。例:
intval("12",5) = 7; (5进制的12=10进制7)
intval("1011",2) = 11; (2进制的1011=10进制11)
int intval ( mixed $var [, int $base = 10 ] )
参数说明:
$var:要转换成 integer 的数量值。
$base:转化所使用的进制。
如果 base为空,通过检测 var 的格式来决定使用的进制:
如果字符串包括了 “0x” (或 “0X”) 的前缀,使用 16 进制 (hex);
否则,如果字符串以 “0” 开始,使用 8 进制(octal);
否则,将使用 10 进制 (decimal)。
payload:?num=4476.5