首页 > 代码库 > 一题关于PHP的CTF
一题关于PHP的CTF
if(isset($_GET[‘time‘])){ if(!is_numeric($_GET[‘time‘])){ echo ‘The time must be number.‘; }else if($_GET[‘time‘] < 60 * 60 * 24 * 30 * 2){ echo ‘This time is too short.‘; }else if($_GET[‘time‘] > 60 * 60 * 24 * 30 * 3){ echo ‘This time is too long.‘; }else{ sleep((int)$_GET[‘time‘]); echo $flag; } echo ‘<hr>‘; }
这里用is_numeric检查是否为数字,而后面用(int)将字符型数字转为数字型数字,那么我们来比较一下这两个函数对字符型数字的处理。
前者支持普通数字型、科学记数法型、部分支持十六进制0x型,在前者支持的形式中,后者不能正确转换的类型有十六进制型、科学计数法型(部分)。
因此本题flag在部分环境下可以是?time=0x4F1A01或者部分环境下是?time=5.184001e6,而在部分环境下是无解的。
一题关于PHP的CTF
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。