攻防世界 WEB 高手进阶区 NSCTF web2 Writeup

攻防世界 WEB 高手进阶区 NSCTF web2 Writeup

题目介绍

攻防世界 WEB 高手进阶区 NSCTF web2 Writeup

题目考点

  • php基本函数语法
  • 加密解密函数 base64_decode()、str_rot13()
  • 字符串反转函数 strrev()
  • 返回字符串一部分函数 substr()

Writeup

进入题目直接给出php源码

<?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;
$_c=chr($__);
$_=$_.$_c;
}
return str_rot13(strrev(base64_encode($_)));
} highlight_file(__FILE__);
/*
逆向加密算法,解密$miwen就是flag
*/
?>

认真分析源码,就是解密字符串 $miwen

加密逻辑:反转字符串 --> 从开头逐位取出 --> ord()-1 --> chr() --> 全部拼接新字符串 --> 对新字符串加密 -- > base64_encode() --> strrev() --> str_rot13() --> 得到题中$miwen

那么,只要逆向解密就可以得到Flag了。下面是我写的解密函数:

<?php
function decode($str){
$_o=base64_decode(strrev(str_rot13($str)));
for($_0=0;$_0<strlen($_o);$_0++){
$_c=substr($_o,$_0,1);
$__=ord($_c)-1;
$_c=chr($__);
$_=$_.$_c;
}
$flag=strrev($_); //反转字符串
return $flag;
}
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
echo decode($miwen);
?>

运行即可得到Flag flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}

攻防世界 WEB 高手进阶区 NSCTF web2 Writeup

上一篇:Clairewd’s message ekmp


下一篇:java之beanutils使用