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

    那么进行一下分析

    <?php
    $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
    
    function encode($str){
        $_o=strrev($str);//反转字符串
        // echo $_o;
            
        for($_0=0;$_0<strlen($_o);$_0++){//循环字符串
           
            $_c=substr($_o,$_0,1);//substr(a,b,c)分割字符串函数,a为字符串,b代表位置,从字符串的第几位开始提取,c代表提取几个字符,则此处表示为依次提取一个字符
            $__=ord($_c)+1;//ord()函数返回长度为一的字符串对应的ASCII值,为十进制整数
            $_c=chr($__);//chr(),返回ASCII值对应的字符,参数可以为十进制和十六进制的数字
            $_=$_.$_c;   //php中点号表示字符拼接
        } 
        return str_rot13(strrev(base64_encode($_)));//str_rot13编码并解码字符串,如,str_rot13(hello)=qwert,那么str_rot13(qwert)=hello
                                                    //strrev(base64_encode($_))是反转base64加密后的字符,
    }
    
    highlight_file(__FILE__);
    /*
       逆向加密算法,解密$miwen就是flag
    */
    ?>
    

    写出逆向代码:
    怎么一步步加密的,我们就一步步解密回去

    这里简单说一下php页面的编写格式如下,中间是脚本代码:
    <?php  ?>
    
    $定义变量,如$a,变量a
    
    像剥洋葱,一步步来
    
    <?php
    $str="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
    $_=base64_decode(strrev(str_rot13($str)));
    $_o=NULL; //不需要定义也可以,只不过会报一个未定义变量的错,但结果还是会运行出来
    for($_0=0;$_0<strlen($_);$_0++){
    $_c=substr($_,$_0,1);
    $__=ord($_c);
    $_c=chr($__-1);
    $_o=$_o.$_c;
    }
    echo strrev($_o);
    ?>
    
    
    读者也可在菜鸟php在线运行工具自行练习: https://c.runoob.com/compile/1

    flag为:flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}

    参考CSDN _Christo,侵删

  • 相关阅读:
    [Swift]LeetCode843. 猜猜这个单词 | Guess the Word
    [Swift]LeetCode852. 山脉数组的峰顶索引 | Peak Index in a Mountain Array
    [Swift]LeetCode867. 转置矩阵 | Transpose Matrix
    [Swift]LeetCode859. 亲密字符串 | Buddy Strings
    [Swift]LeetCode844. 比较含退格的字符串 | Backspace String Compare
    [Swift]LeetCode824. 山羊拉丁文 | Goat Latin
    PHP 分析1
    php 分析
    停下库
    常用sql
  • 原文地址:https://www.cnblogs.com/sillage/p/13930740.html
Copyright © 2020-2023  润新知