攻防世界 | WEB2

先来看一下代码

<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

function encode($str){
    $_o=strrev($str);
    // echo $_o;
        
    for($_0=0;$_0<strlen($_o);$_0++){
       
        $_c=substr($_o,$_0,1); //substr()函数返回字符串$_o的一部分,从$_0开始,截取1个字符的长度
        $__=ord($_c)+1; //ord() 函数返回字符串中第一个字符的 ASCII 值
        $_c=chr($__); //chr() 函数从指定 ASCII 值返回字符
        $_=$_.$_c;  //.用来连接字符串 
    } 
    return str_rot13(strrev(base64_encode($_)));
}

highlight_file(__FILE__);
/*
   逆向加密算法,解密$miwen就是flag
*/
?>

方法一:先用在线工具解码,再层层解密

只要按照php的加密方式反过来解密就可以了

具体流程:rot13解码——翻转字符串——base64解码——encode函数反向解码

密文:a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws

rot13解码:n1mYotDfPRFRVdEYjhDNlZjYld2Y5IjOkdTN3EDNlhzM0gzZiFTZ2MjO4gjf

翻转字符串:fjg4OjM2ZTFiZzg0MzhlNDE3NTdkOjI5Y2dlYjZlNDhjYEdVRFRPfDtoYm1n

base64解码:~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg

encode函数反向解码:

<?php
$_='~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg';

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

echo strrev($_o);
?>

方法二:直接写一个反向解密的代码

<?php
$str='a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws';
$_ = base64_decode(strrev(str_rot13($str)));

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

echo strrev($_o);
?>

拿到flag:flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}

猜你喜欢

转载自blog.csdn.net/weixin_47982238/article/details/109078256