攻防世界 web2 writeup

http://39.96.86.88/2020/04/03/攻防世界-web2-writeup/

在这里插入图片描述
打开页面就是源码,结合注释里的提示,这是一道代码审计的题。根据给出的加密方法将$miwen还原出来。
先解释一下里面的几个函数:

strrev($str);       //反转str字符串
substr($_o,$_0,1);	//返回的字符串  取头不取尾 在这里是的作用是从头到尾一个一个取出字符
ord($_c)+1;			//返回字符串的ascii然后加1
chr($__); 			//将上面加1后的ascii码转为字符
return str_rot13(strrev(base64_encode($_)));//先base64解码 -> 反转字符串 -> 只把字母向前移动13位

这里需要注意的是:
1.for循环的作用就是将字符串字符从头到尾依次取出,然后将它变为ascii码加1的字符,这样就完成了加密的主要部分。
2.因为字母有26个所以再次调用str_rot13()即可将字母还原。

上解密脚本

<?php
	$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
	function decode($str)
	{
    
    	//因为字母有26个所以再次调用str_rot13()即可将字母还原为之前的
    	$_o = base64_decode(strrev(str_rot13($str)));
    	echo $str_1;
    	for($_0=0;$_0<strlen($_o);$_0++){
    
    
     	//只需要将字符串里的每个字符变为ascii码-1的字符即可  
        	$_c=substr($_o,$_0,1);//返回的字符串  取头不取尾 这里是从头一个一个取到尾
        	$__=ord($_c)-1;//返回ascii+1
        	$_c=chr($__);//和ord相反
        	$_=$_.$_c;   //连接
           		echo strrev($_);

    	} 
	}

	decode($miwen);
	highlight_file(__FILE__);
	?>

在这里插入图片描述flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}

猜你喜欢

转载自blog.csdn.net/qq_43478096/article/details/104647731