//ord() 函数返回字符串的首个字符的 ASCII 值。
//strrev() 函数:反转字符串 strrev("I love Shanghai!");=>!iahgnahS evol I
//php substr() — 返回字符串的子串
substr ( string $string
, int $start
[, int $length
] )
start
如果 start
是非负数,返回的字符串将从 string
的 start
位置开始,从 0 开始计算。例如,在字符串 “abcdef
” 中,在位置 0
的字符是 “a
”,位置 2
的字符串是 “c
” 等等。
如果 start
是负数,返回的字符串将从 string
结尾处向前数第 start
个字符开始。
如果 string
的长度小于 start
,将返回 FALSE
。
Example #1 使用负数 start
<?php
$rest = substr("abcdef", -1); // 返回 "f"
$rest = substr("abcdef", -2); // 返回 "ef"
$rest = substr("abcdef", -3, 1); // 返回 "d"
?>
源码:
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
//$str为flag $miwen为加密后的字符
function encode($str){
$_o=strrev($str);//倒写字符串
// echo $_o;
for($_0=0;$_0<strlen($_o);$_0++){
$_c=substr($_o,$_0,1); //第$0个字符
$__=ord($_c)+1;//ord()转换为ascii码
$_c=chr($__); //从ascii码返回字符(十进制十六进制八进制) $_=$_.$_c; //acsii+对应的字符
}
return str_rot13(strrev(base64_encode($_)));
//
str_rot13()编码或解码,
把每一个字母在字母表中向前移动 13 个字母得到。数字和非字母字符保持不变。
//strrev()反转字符串函数
}
highlight_file(__FILE__);
/*
逆向加密算法,解密$miwen就是flag
*/
?>
由源代码可猜出,$str为输入变量(flag),$miwen为加密后的密文
需做的是反向解码,从下向上解
最后输出即为flag