0x01. 进入环境,查看问题

如图,给了一串代码:

xctf攻防世界 Web高手进阶区 web2_字符串

0x02. 问题分析

可以很清楚的看到,题目就是想对密文进行反解密就ok了。主要是代码审计,先解释一下php中的函数含义:

strrev(string): 反转字符串
strlen(string): 返回字符串的长度
substr(string, start, length): 返回字符串的一部分
string: 所需要的字符串
start: 在字符串何处开始
length: 可选。规定被返回字符串的长度。默认是直到字符串的结尾
ord(string): 返回字符串首个字符的 ASCII 值
chr(): 从指定的 ASCII 值返回对应的字符
str_rot13(string): 对字符串执行 ROT13 编码。
ROT13 编码把每一个字母在字母表中向前移动 13 个字母。数字和非字母字符保持不变
编码和解码都是由该函数完成的。如果把已编码的字符串作为参数,那么将返回原始字符串
base64_encode(string): 使用 MIME base64 对数据进行编码。

进行反解密,丢入在线运行地址中:​​https://www.dooccn.com/php/​​:

<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$flag="";
$a = base64_decode(strrev(str_rot13($miwen)));

for($_0=0;$_0<strlen($a);$_0++){
$_c=substr($a,$_0,1);
$__=ord($_c)-1;
$_c=chr($__);
$flag=$flag.$_c;
}

$b = strrev($flag);
echo($b);
?>

解出最终答案:​​flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}​