zoukankan      html  css  js  c++  java
  • 攻防世界-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
    */
    ?> 

    看来是用一段代码来将flag加密了。需要我们一步一步的往回推。。上面也说了,是逆向加密算法,解密miwen就是flag。好了,那这样我们就有方向。先来看一下代码吧

    $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
    miwen后面的那段字符串是加密后的。然后我们继续看
    首先strrev是将字符串反转,那个就是将$str里的值反转赋给$_o,也是就是将flag反转了,赋值给了$_o
    然后有一个for循环。strlen函数是统计字符串的长度。ord()函数其实就是将字符串转换成Ascii码,而chr()的话就是转成字符串嘛
    总的来说,这整段for循环其实就是将反转后的flag的每个Ascii码值都加1然后再转回字符串,拼接上。
    最后的
    str_rot13(strrev(base64_encode($_)));
    base64_encode()函数就是将$_的值利用base64加密
    strrev(base64_encode())再将加密后的密文反转一下。

    str_rot13是rot13加密算法。
    这段代码的意思就是先将$_的值base64加密一下,然后反转加密后的字符串,最后再利用rot13加密一下。就得到了miwen的值。

    那好我们来解密一下。首先我们将miwen利用rot13解密,得到
    n1mYotDfPRFRVdEYjhDNlZjYld2Y5IjOkdTN3EDNlhzM0gzZiFTZ2MjO4gjf

    再将这段字符串反转,再base64解密一下,得到:

    ~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg

    然后要将上面的字符串的每个ascii码都减去1。那我们写一个小小的脚本:

    string ="~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg"
    news=''
    for i in string:
        if i==" ":
            news = news + i
        else:
            news = news + chr(ord(i)-1)
    print(string)
    print(news)
            

    运行以上python脚本就会输出:

    88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg
    }77925d0af7327d30646c918bfda5d37b_FTCSN{:galf

    下面这段字符串再反转一下就得到了flag:

    flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977} 

    这个题是本博主一点点做的,并没有看wp,虽说题并不是很难,但是还是有点小激动。毕竟自己没有看wp

    其实这道题可以写一个脚本直接就可以拿到flag,但是本博主太菜,写不出来。QAQ

    继续学习吧!!!

  • 相关阅读:
    Linux软件安装之JDK的安装
    VMWARE虚拟机安装系统提示CPU已被客户机操作系统禁用和secureCUT乱码
    联网配置及静态更改
    全文搜索技术--Solr7.1之配置中文分析器
    全文搜索技术--solr7.1之mysql的安装步骤
    建立主从的九大步及配置哨兵
    mysql 模糊匹配优化(全文索引)
    微服务架构的身份验证解决方案
    spring声明式事务回滚
    spring 通过@responsebody接收多个对象参数
  • 原文地址:https://www.cnblogs.com/awsole/p/13858340.html
Copyright © 2011-2022 走看看