进入题目环境,查看页面信息:
<?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 进行逆向解密获取 flag:
str_rot13()
函数是 PHP 中的一个字符串处理函数,用于对字符串进行 ROT13 编码或解码。ROT13 是一种简单的字符替换加密技术,它将字母表中的每个字母替换成字母表中它后面第 13 个字母,并且保留字母的大小写不变。
遂根据源码逆向编写脚本:
<?php function decode($str) { $result = ""; $str = str_rot13($str); $str = strrev($str); $str = base64_decode($str); for($i = 0; $i < strlen($str); $i++) { $part = substr($str, $i, 1); $trans = ord($part) - 1; $part = chr($trans); $result = $result.$part; } return strrev($result); } $miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; echo decode($miwen); ?>
运行脚本:
成功获取 flag 值。