攻防世界-WEB2

代码审计

首先进行代码审计

<?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
*/
?>
  • 首先定义一个encode函数,接受一个str变量

  • 将接收的变量利用strrev函数进行字符串反转,并赋值给$_o

  • 接着使用一个for循环,接着,遍历 $_o 中的每个字符。设定临时参数$_0初值为0,退出条件为临时变量$_0等于$_o(反转$str)的长度时

  • 在for循环内利用substr函数从$o(反转$str)中截取一个由临时参数$_0表示下标的字符,存储在 $_c 变量中。

  • 然后,通过 ord() 函数获取 $_c 字符的 ASCII 值,并+ 1,然后利用chr()函数,将数据转换为字符后重新赋值给$c

  • 将$_c 存储的字符追加到 $_ 变量中。

  • 循环结束后,将 $_ 变量进行base64编码,然后再利用strrev函数倒序,最后使用ROT13 编码,return返回最终值

解题步骤

根据题目提示,我们需要对这段自定义的加密函数进行逆向解密

很简单,倒着来就行了

function decode($str){
    $result = '';
    $o = strrev(base64_decode(strrev(str_rot13($str))));
    for($i = 0;$i < strlen($o);$i++){
        $c = substr($o,$i,1);
        $c = chr(ord($c)-1);
        $result = $result.$c; 
    }
    return $result;

}
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
echo decode($miwen);

得到flag

PHP strrev() 函数

strrev() 函数用于反转字符串。

语法
strrev( string)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值