美文网首页
PHP学习-ctf-变异凯撒-chr();ord();subst

PHP学习-ctf-变异凯撒-chr();ord();subst

作者: Cookie_hunter | 来源:发表于2018-03-22 20:53 被阅读0次

    chr();ord();substr();

    1.substr();
    作用:返回字符串的一部分。

    参数:substr(string,start,length);
    注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。

    从字符串中返回 "world":
    
    <?php
    echo substr("Hello world",6);
    ?>
    
    
    //结果:world
    

    2.ord();
    作用:返回字符串中第一个字符的 ASCII 值。

    参数:ord(string);

    返回 "h" 的 ASCII值:
    
    <?php
    echo ord("h")."<br>";
    echo ord("hello")."<br>";
    ?>
    
    
    //结果:104
            104
    

    3.chr();
    作用:从指定 ASCII 值返回字符ASCII 值可被指定为十进制值、八进制值或十六进制值。
    八进制值被定义为带前置 0,十六进制值被定义为带前置 0x。

    参数:chr(ascii)

    从不同 ASCII 值返回字符:
    
    <?php
    echo chr(52) . "<br>"; // Decimal value
    echo chr(052) . "<br>"; // Octal value
    echo chr(0x52) . "<br>"; // Hex value
    ?>
    

    ctf-变异凯撒

    加密密文:afZ_r9VYfScOeO_UL^RWUc;
    格式:flag{ };

    这道题的密码表是ASCII表,通过观察前五个字符的规律可以得到加密后的密文是f-5=a,l-f=6。。。
    这样的规律,每两个对应字符之间的ASCII差值逐渐增大,增量为1 ;

    <?php
    
         function decode($str){
             $finish='';
             for($_O=5;$_O<strlen($str)+5;$_O++){
                 $_c=substr($str,$_O-5,1);              //截取单个字符
                 $__=ord($_c)+$_O;                      //将截取的字符转换ascll码,位移
                 $_c=chr($__);                          //转换ascll
                 $finish=$finish.$_c;                   //将修改后的字符拼接
             }
             return $finish;
         }
    $p=decode("afZ_r9VYfScOeO_UL^RWUc");
    print $p;
    ?>
    

    相关文章

      网友评论

          本文标题:PHP学习-ctf-变异凯撒-chr();ord();subst

          本文链接:https://www.haomeiwen.com/subject/goszqftx.html