进入之后就是一段php代码
注释也写的也很清楚了逆向解密就可以得到flag了
先审计一下代码
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function encode($str){
$_o=strrev($str); //这是反转字符串
// echo $_o;
for($_0=0;$_0<strlen($_o);$_0++){ //
$_c=substr($_o,$_0,1); //从$_0=0位置开始,返回1个字符
$__=ord($_c)+1; //返回字符串首个字母的ASCII值
$_c=chr($__); //返回指定进制的ASCII值
$_=$_.$_c; //拼接两个变量的内容 赋值
}
return str_rot13(strrev(base64_encode($_))); //返回 ROT13 编码/解码(反转字符串(base64加密($_))) 的结果
}
highlight_file(__FILE__);
/*
逆向加密算法,解密$miwen就是flag
*/
?>
来了解一下其中涉及的函数
strrev函数
反转字符串
substr函数
截取字符串的一部分(取子串)
第一个是源字符串,第二个参数规定在字符串的何处开始,第三个参数规定被返回字符串的长度。默认是直到字符串的结尾。
ord函数
ord() 函数返回字符串的首个字符的 ASCII 值。
chr()函数
chr() 函数从指定 ASCII 值返回字符。
str_rot13()函数
str_rot13() 函数对字符串执行 ROT13 编码。
ROT13 编码把每一个字母在字母表中向前移动 13 个字母。数字和非字母字符保持不变。
编码和解码都是由相同的函数完成的。如果把已编码的字符串作为参数,那么将返回原始字符串。
大致都知道什么意思了,及开始编写 逆向代码
<?php
$secret="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$secret=base64_decode(strrev(str_rot13($secret)));
$m=$secret;
for($i=0;$i<strlen($secret);$i++){
$_c=substr($m,$i,1);
$__=ord($_c)-1;
$__=chr($__);
$_=$_.$__;
}
echo strrev($_);
?>
解出flag:
flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}