攻防世界WEB(新手模式)2-5-web2

题目解析:

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

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

加密步骤:

  1. 反转字符串

  2. 每个字符 ASCII 码加 1

  3. 进行 Base64 编码

  4. 反转结果字符串

  5. 对整个结果进行 ROT13 替换(是字母替换,对字母 a-z/A-Z 移动13位,非字母不变。)

因此

加密顺序:
原字符串反转ASCII+1Base64编码反转ROT13

解密顺序:
密文ROT13解码反转Base64解码ASCII-1反转

方法一:

全部利用工具进行

1、rot13在线工具解码(也可以自己写脚本)

解码 ROT13 - 将 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}

相关推荐
bearpping11 小时前
Nginx 配置:alias 和 root 的区别
前端·javascript·nginx
淮北49411 小时前
vim学习进阶
学习·编辑器·vim
@大迁世界11 小时前
07.React 中的 createRoot 方法是什么?它具体如何运作?
前端·javascript·react.js·前端框架·ecmascript
January120712 小时前
VBen Admin Select 选择框选中后仍然显示校验错误提示的解决方案
前端·vben
. . . . .12 小时前
前端测试框架:Vitest
前端
xiaotao13112 小时前
什么是 Tailwind CSS
前端·css·css3
sayang_shao12 小时前
ARM架构运行模式学习笔记
arm开发·学习·架构
战南诚13 小时前
VUE中,keep-alive组件与钩子函数的生命周期
前端·vue.js
发现一只大呆瓜13 小时前
React-彻底搞懂 Redux:从单向数据流到 useReducer 的终极抉择
前端·react.js·面试