码迷,mamicode.com
首页 > Web开发 > 详细

一题关于PHP的CTF

时间:2017-04-18 12:58:32      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:函数   计数   int   logs   bsp   处理   eric   log   isset   

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

标签:函数   计数   int   logs   bsp   处理   eric   log   isset   

原文地址:http://www.cnblogs.com/test404/p/6726969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!