攻防世界web2

web2

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;			 #将每个字符的ASCII码加1
        $_c=chr($__);			 #将转换后的ASCII码转换成字符串赋值给$_c
        $_=$_.$_c;   			 #将所有的字母拼接出来给$_
    } 			
    return str_rot13(strrev(base64_encode($_)));  #函数返回值是rot13加密(反转字符(base64加密($_)))
}

highlight_file(__FILE__);
/*
   逆向加密算法,解密$miwen就是flag
*/
?> 

2、解密脚本

(1)PHP脚本

<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$str1=base64_decode(strrev(str_rot13($miwen)));
for($_0=0;$_0<strlen($str1);$_0++){
       
    $_c=substr($str1,$_0,1);   #截取每一个字符
    $__=ord($_c)-1;			 #将每个字符的ASCII码减1
    $_c=chr($__);			 #将转换后的ASCII码转换成字符串赋值给$_c
    $_=$_.$_c;   			 #将所有的字母拼接出来给$_
}
echo strrev($_); 			
?>

(2)Python脚本

# 将一个字符串依次经过rot13,反转和base64解密
#将解密后的字符串的每一个字符的ascii码减一再反转输出
import base64
from Crypto.Util.number import bytes_to_long,long_to_bytes
miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"
def rot13_2(s,offSet=13):
    d={chr(i+c) : chr((i+offSet) % 26 + c) for i in range(26) for c in (65,97)}
    return ''.join([d.get(c, c) for c in s])
str1= rot13_2(miwen)
str2 =base64.b64decode(str1[::-1])
print(str2)
str2 = "{1}{0}{1}".format(str2,'"')
b = ""
for i in str2:
    a=chr(ord(i)-1)
    b = b + (a)
print(b[: :-1])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值