【攻防世界】web2(逆向解密)

进入题目环境,查看页面信息:

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
*/
?>

审计代码,代码中提示对 变量$miwen 进行逆向解密获取 flag:

str_rot13() 函数是 PHP 中的一个字符串处理函数,用于对字符串进行 ROT13 编码或解码。ROT13 是一种简单的字符替换加密技术,它将字母表中的每个字母替换成字母表中它后面第 13 个字母,并且保留字母的大小写不变。

遂根据源码逆向编写脚本:

php 复制代码
<?php 
    function decode($str) {
        $result = "";

        $str = str_rot13($str);
        $str = strrev($str);
        $str = base64_decode($str);
        
        for($i = 0; $i < strlen($str); $i++) {
            $part = substr($str, $i, 1);
            $trans = ord($part) - 1;
            $part = chr($trans);
            $result = $result.$part;
        }

        return strrev($result);
    }

    $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

    echo decode($miwen);
?>

运行脚本:

成功获取 flag 值。