题目描述:根据如下php代码进行解密
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function encode($str){
$_o=strrev($str);
// echo $_o;
for($_0=0;$_0<strlen($_o);$_0++){
$_c=substr($_o,$_0,1);
$__=ord($_c)+1;
$_c=chr($__);
$_=$_.$_c;
}
return str_rot13(strrev(base64_encode($_)));
}
highlight_file(__FILE__);
/*
逆向加密算法,解密$miwen就是flag
*/
?>
1. 思路分析
题目代码中给出了编码函数,我们先分析出这个编码函数干了什么事情
1.1 将原字符串反转
1.2 反转后的字符对于的ASCII码+1
1.3 进行base64编码后再进行反转,最后进行 rot13编码(ROT13 是一种简单的字母替换密码,将字母表中的每个字母向后移动 13 个位置(循环移位))
好了,知道了编码函数是怎么操作的,解码函数也就明了了,按照上面的步骤反向进行操作即可
2. 解题过程
根据思路,写出解码函数如下:
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function decode($str){
$_o=base64_decode(strrev(str_rot13($str)));
//$_o=strrev($str);
// echo $_o;
for($_0=0;$_0<strlen($_o);$_0++){
$_c=substr($_o,$_0,1);
$__=ord($_c)-1;
$_c=chr($__);
$_=$_.$_c;
}
// return str_rot13(strrev(base64_encode($_)));
return strrev($_);
}
//highlight_file(__FILE__);
print(decode($miwen));
/*
逆向加密算法,解密$miwen就是flag
*/
?>
运行该函数,得到flag为:flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}
总结:这道题比较简单,编码函数都给出来了,进行反向解密即可