shacker_shen

导航

攻防世界Web_web2

题目:

 

 

 

直接给php源代码,题目描述是解密。

 

由代码可以知道$miwen就是flag,而且给出了加密函数。

 

代码审计:

 

 

<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";   // flag加密后结果

function encode($str){    // 加密函数,传入字符串$str
    $_o=strrev($str);     // 反字符串
    // echo $_o;        
        
    for($_0=0;$_0<strlen($_o);$_0++){   // for循环字符串长度
       
        $_c=substr($_o,$_0,1);      // 从$_0位置返回1个字符,即讲$o字符逐一传给$_c 
        $__=ord($_c)+1;          // 字符串首字母转为ASCII +1
        $_c=chr($__);            // 返回ASCII值对应的字符
        $_=$_.$_c;              // 拼接两个变量并赋值给$_
    } 
    return str_rot13(strrev(base64_encode($_)));  // 返回$_base64编码后,返字符串,并进行rot13编码的值
}

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

 

 

 

 

 写出逆向代码:

<?php
$str='a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws';
function decode($str){
    $_ = 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;   
    }
    return strrev($_o);
}
echo $flag=decode($str);
?>

运行一下代码:

 

posted on 2022-03-01 17:53  shacker_shen  阅读(29)  评论(0编辑  收藏  举报