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])