攻防世界web web2 writeup

首先介绍一下解题过程中要用到的几个新函数

strrev():将所给字符串反转。

str_rot13(): ROT13 编码把每一个字母在字母表中向前移动 13 个字母。数字和非字母字符保持不变

ord(): 返回字符串的首个字符的 ASCII 值。

chr():从不同的 ASCII 值返回字符。

进入在线场景看到以下页面
在这里插入图片描述通过注释我们知道上面的代码描述的是加密密文的方法,现在要求我们解出密文就可以得到flag

代码审计(对flag加密步骤):
1.将flag反转(记作FLAG)
2.使FLAG中每一个字符的ASCII值加一(凯撒密码)
3.再对其进行base64编码
4.再次逆转字符串
5.再次使用ROT13编码

知道了题目的加密步骤之后我们只需要反着解密就好了,写出解密代码

<?php
function decode($str)
{
	$_o=base64_decode(strrev(str_rot13($str)));
	for($i=0;$i<strlen($_o);$i++)
	{
       
        $_c=substr($_o,$i,1);
        $__=ord($_c)-1;
        $_c=chr($__);
        $_=$_.$_c;   
    }  
	return strrev($_);
	
}
$string='a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws';
echo decode($string);

?>

运行之后得
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值