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;
?>
网友评论