热身
<?php
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;
}
}
要求num不是4467,还要求num里面不能有字母和点,还要求不能开头是0
最后,若过了这个intval就给flag
这里主要考察了一个intval的性质
如果 base 是 0,通过检测 var 的格式来决定使用的进制:
1.如果字符串包括了 “0x” (或 “0X”) 的前缀,使用 16 进制 (hex);否则,
2.如果字符串以 “0” 开始,使用 8 进制(octal);
3.否则,将使用 10 进制 (decimal)。
明显不能用0x,那么就用八进制绕过第一层,但是开头不能是0
那么就搞一个%20开头就成功绕过了
?num=%20010574
shellme
一打开就是phpinfo界面
一搜flag就出来了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)