攻防世界-web-web2

文章提供了一个PHP编码函数,通过对函数的分析,解密过程包括反转字符串,对每个字符的ASCII码减1,然后进行base64解码和ROT13反向编码。通过编写解码函数,成功解密给定的$miwen变量,得到flag。这是一个关于编码与解码技术的实例。
摘要由CSDN通过智能技术生成

题目描述:根据如下php代码进行解密

 <?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

function encode($str){
    $_o=strrev($str);
    // echo $_o;
        
    for($_0=0;$_0<strlen($_o);$_0++){
       
        $_c=substr($_o,$_0,1);
        $__=ord($_c)+1;
        $_c=chr($__);
        $_=$_.$_c;   
    } 
    return str_rot13(strrev(base64_encode($_)));
}

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

1. 思路分析

题目代码中给出了编码函数,我们先分析出这个编码函数干了什么事情

1.1 将原字符串反转

1.2 反转后的字符对于的ASCII码+1

1.3 进行base64编码后再进行反转,最后进行 rot13编码(ROT13 是一种简单的字母替换密码,将字母表中的每个字母向后移动 13 个位置(循环移位))

好了,知道了编码函数是怎么操作的,解码函数也就明了了,按照上面的步骤反向进行操作即可

2. 解题过程

根据思路,写出解码函数如下:

 <?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

function decode($str){
    $_o=base64_decode(strrev(str_rot13($str)));
    //$_o=strrev($str);
    // echo $_o;
        
    for($_0=0;$_0<strlen($_o);$_0++){
       
        $_c=substr($_o,$_0,1);
        $__=ord($_c)-1;
        $_c=chr($__);
        $_=$_.$_c;   
    } 
   // return str_rot13(strrev(base64_encode($_)));
   return strrev($_);
}

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

运行该函数,得到flag为:flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977} 

 

总结:这道题比较简单,编码函数都给出来了,进行反向解密即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值