攻防世界-web2 (NSCTF-WEB)
今天在做题无意发现有个比较有意思(被多个平台收录过)
非常适合编码,web,密码初学者
所以今天就把这道题给你们详细整理出来
感谢攻防手机平台和出题方NSCTF✌✌
目录
题目地址
题目链接http://61.147.171.105:63454/
解题过程
打开网址就一串代码
给了我们加密的密文,让我们解出flag
审计一波
人家既然都说逆向加密算法
那就用逆向思维去观察这串代码
$_c=substr($_o,$_0,1); # 每次取一个字符,就是对应的遍历的字符i
$__=ord($_c)+1; # 转化为对应的10进制数
$_c=chr($__); # 10进制转换为ASCII码
$_=$_.$_c; # 累加$_c
for循环,从0到循环到字符串长度
从o 开 始 之 后 _o开始之后
o开始之后_0长度的字符开始寻找,长度为1的输出给了$_c
先时将flag字符串逆序,
然后每一个ascii码数值+1,
然后base64加密,
然后逆序,
然后再rot13加密
得到加密的密文:a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws
然后我们按照人家的加密思想逆运算一下就出来了flag
这是自己写的PHP脚本
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$miwen=base64_decode(strrev(str_rot13($miwen)));
//echo $miwen;
$m=$miwen;
for($i=0;$i<strlen($m);$i++){
$_c=substr($m,$i,1);
$__=ord($_c)-1; # 字符转数字,在减1
$__=chr($__); # 数字转字符
$_=$_.$__; # 拼接字符串
}
echo strrev($_); # 反转字符串
?>
PHP在线编辑网站
PHP在线编辑网站PHP Hello实例!..https://c.runoob.com/compile/1/运行得到flag
总结 题目不算难,但是需要基本的代码知识,所以特别适合初学者