XCTF-WEB-进阶题

目录

1、题目源码

2、解题准备

3、加密过程理解

4、解密过程思路

5、解密PHP代码


1、题目源码

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

2、解题准备

        str_rot13(string);//把每一个字母在字母表中向前移动 13 个字母得到。数字和非字母字符保持不变。再运行一次可得到原字符串。

        strrev(string);//反转字符串,再运行一次可得到原字符串。

        base64_decode(string);//base64解密函数

        base64_encode(string);//base64加密函数

        strlen(string)//获取字符串长度。

        $c=substr(string,start,len);//从start位开始取string字符,取len位

        ord()//将字符转换为anscii

        chr();//将anscii转换为字符

3、加密过程理解

        自定义函数接收到字符串;

        字符串反转;

        将每一位字符转换为anscii加1再转换为字符

        base64加密反转最后前移13位。

        返回加密后字符串。

4、解密过程思路

        将密文前移13位反转base64解密;

        将每一位字符转换为anscii减1再转换为字符

        字符串反转得到明文flag

5、解密PHP代码

<?php
    #加密后的字符串
    $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
    #对字符串每字符前移13位
    $miwen=str_rot13($miwen);
    #字符串反转
    $miwen=strrev($miwen);
    #字符串base64解密
    $miwen=base64_decode($miwen);
    $ss='';
    #循环每个字符转换为ascii减1再转换为字符
    for($i=0;$i<strlen($miwen);$i++){
        $c=substr($miwen,$i,1);
        $n=ord($c)-1;
        $s=chr($n);
        $ss=$ss.$s;
    }
    #反转字符串再输出,获取flag
    echo strrev($ss);
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力工作的网安人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值