美文网首页
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