天天看点

NSCTF web200

<?php
function encode($str){
    $_o=strrev($str); //hjk
    for($_0=0;$_0<strlen($_o);$_0++){
        $_c=substr($_o,$_0,1);
        $__=ord($_c)+1;
        $_c=chr($__);
        $_=$_.$_c;
    }
    return str_rot13(strrev(base64_encode($_)));
}
           

函数解释:

1.strrev()

翻转字符串。

2.substr()

substr(string,start,length)

3.ord() 函数返回字符串的首个字符的 ASCII 值。

4.chr() 函数从指定的 ASCII 值返回字符。

5.str_rot13() 函数对字符串执行 ROT13 编码。

我们假设str为hjk

1._c=h _c=j _c=k

__=72+1 __=73+1 __=74+1

_c=j _c=k _c=l

_=j _=jk _c=jkl

写完之后我忘记翻转了,,,,但是道理是这个道理到时候记住反翻转。

我们知道密文之后我们:

1.base64解密

2.翻转

3.str_rot13

4.反执行一下代码的时候我们只需要先将加1变成减一,然后字符串翻转。

for($_0=0;$_0<strlen($_o);$_0++){
        $_c=substr($_o,$_0,1);
        $__=ord($_c)+1;
        $_c=chr($__);
        $_=$_.$_c;
    }
           
NSCTF web200