攻防世界web2(新手模式)

一、web2

1.基本知识点

strrev() :反转字符串

str_rot13():用于字符串加密和解密的函数,它实现了 ROT13 算法。ROT13(rotate by 13 places)是一种简单的字母替换加密算法,它将字母表中的每个字母替换为其后第13个字母。由于字母表有26个字母,所以再次应用 ROT13 会恢复原始字符串,因此它是一种对称加密

2.解题过程

<?php

$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

function encode($str){

    $_o=strrev($str);

    // echo $_o;

   for ($_0 = 0; $_0 < strlen($_o); $_0++) {
    // 获取字符串 $_o 中索引为 $_0 的字符
    $_c = substr($_o, $_0, 1);

    // 获取该字符的 ASCII 码
    $__ = ord($_c) + 1;

    // 将 ASCII 码加 1 转换回字符
    $_c = chr($__);

    // 将新的字符添加到结果字符串中
    $_ = $_ . $_c;
}

    return str_rot13(strrev(base64_encode($_)));

}

highlight_file(__FILE__);

/*

   逆向加密算法,解密$miwen就是flag

*/

?>

encode()函数中,先将$str进行反转,再将$str的每个字符的ASCII码加1,然后转为字符。最后进行base64编码、反转、str_rot13加密。

所以得到对$miwen解密的代码为:

<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$_o=base64_decode(strrev(str_rot13($miwen)));
$_="";
for($_0=0;$_0<strlen($_o);$_0++){
       
    $_c=substr($_o,$_0,1);
    //将每个字符的ASCII码减1
    $__=ord($_c)-1;
    $_c=chr($__);
    $_=$_.$_c;   
} 
$a=strrev($_);
echo $_;

?>

得到flag:

flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}

posted @ 2024-07-19 18:40  夕瑶^  阅读(26)  评论(0编辑  收藏  举报