题目解析:
拿到题目看一下,典型的需要逆向算法

那我们第一步肯定就是对代码进行解析

加密步骤:
-
反转字符串
-
每个字符 ASCII 码加 1
-
进行 Base64 编码
-
反转结果字符串
-
对整个结果进行 ROT13 替换(是字母替换,对字母 a-z/A-Z 移动13位,非字母不变。)
因此
加密顺序:
原字符串 → 反转 → ASCII+1 → Base64编码 → 反转 → ROT13
解密顺序:
密文 → ROT13解码 → 反转 → Base64解码 → ASCII-1 → 反转
方法一:
全部利用工具进行
1、rot13在线工具解码(也可以自己写脚本)

得到密文:n1mYotDfPRFRVdEYjhDNlZjYld2Y5IjOkdTN3EDNlhzM0gzZiFTZ2MjO4gjf
2、反转

得到密文:fjg4OjM2ZTFiZzg0MzhlNDE3NTdkOjI5Y2dlYjZlNDhjYEdVRFRPfDtoYm1n
3、base64解码
Base64 在线编码解码 | Base64 加密解密 - Base64.us

得到密文:~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg
4、ASCII-1
这个部分没用在线工具,直接用ai的
得到密文:77`2d0af732d730646c918bfda5d37b_FTCSN{:gaclf
5、再次反转
flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}
方法二:
脚本运行
php
<?php
$miwen = "a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
// 解密步骤
$step1 = str_rot13($miwen); // 1. ROT13 解码
$step2 = strrev($step1); // 2. 反转
$step3 = base64_decode($step2); // 3. Base64 解码
// 4. ASCII 减 1
$step4 = "";
for ($i = 0; $i < strlen($step3); $i++) {
$c = $step3[$i];
$step4 .= chr(ord($c) - 1);
}
// 5. 反转得到原始明文
$flag = strrev($step4);
echo "Flag: " . $flag . "\n";
?>
我这里直接用php沙箱运行,得到flag啦
PHP Sandbox - Execute PHP code online through your browser

flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}