首先介绍一下解题过程中要用到的几个新函数
strrev():将所给字符串反转。
str_rot13(): ROT13 编码把每一个字母在字母表中向前移动 13 个字母。数字和非字母字符保持不变。
ord(): 返回字符串的首个字符的 ASCII 值。
chr():从不同的 ASCII 值返回字符。
进入在线场景看到以下页面
通过注释我们知道上面的代码描述的是加密密文的方法,现在要求我们解出密文就可以得到flag
代码审计(对flag加密步骤):
1.将flag反转(记作FLAG)
2.使FLAG中每一个字符的ASCII值加一(凯撒密码)
3.再对其进行base64编码
4.再次逆转字符串
5.再次使用ROT13编码
知道了题目的加密步骤之后我们只需要反着解密就好了,写出解密代码
<?php
function decode($str)
{
$_o=base64_decode(strrev(str_rot13($str)));
for($i=0;$i<strlen($_o);$i++)
{
$_c=substr($_o,$i,1);
$__=ord($_c)-1;
$_c=chr($__);
$_=$_.$_c;
}
return strrev($_);
}
$string='a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws';
echo decode($string);
?>
运行之后得