本例子来自攻防世界题目:web2
题目写的很清楚了,便是让咱们逆一个加密算法,将密文解密后便是flag。
咱们来看encode函数,strrev函数是将字符串次序颠倒过来(如将asdf改成fdsa),并返回一个指向这个颠倒的字符串的指针(这儿应该就寓意着返回的字符串不可修改)。而后for循环经历了strlen($_o)次,这儿看不出什么,那样就继续向下看,substr函数之前有介绍过,看代码发掘其经历了颠倒的字符字符串的每一个字符,并将其截取为$_c,而后将每一个字符转化为ascii码后加一再转化回去(分别运用ord和chr函数,两个函数过于简单在这儿就不赘述了),最后再将所有字符拼接在一块(php中的.表率字符串的拼接,这儿便是把所有循环得到的字符又拼接回去)。
最后,他将处理好的字符串进行base64加密,再颠倒次序,再运用rot13加密,在这儿提一嘴rot13加密,其便是凯撒暗码移位数为13的状况(然则将体积写掰开分别成环),因为有26个英文字母,因此两次相同rot13加密算法后就得到了原本的密文。
因此对算法的逆就很简单了
得到结果:flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}
|