码迷,mamicode.com
首页 > Web开发 > 详细

web2

时间:2020-05-08 12:46:55      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:yum   单个字符   for   位置   base   rev   sub   sdn   加密   

0x01

<?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
*/
?> 

strrev()

定义用法:strrev()

  • 翻转字符串

substr()

定义:

  • 返回字符串的一部分

用法:substr(string,start,length)

  • string,必需,查询的字符串
  • start,必需,在字符串的开始位置
  • length,可选,返回字符串的长度
<?php

$a="hello world";
$b=substr($a, 6);
$c=substr($a, 7,1);
echo $b,PHP_EOL;
echo $c;

world
o
?>

ord()

定义:

  • 返回单个字符的ASCII值
  • 返回字符串首个字符的ASCII值
<?php

echo ord("s");
echo ord("string");

115
115
?>

chr()

定义:

  • 从不同的ASCII值返回字符
<?php

echo chr(61); //十进制
echo chr(061); //八进制
echo chr(0x61); //十六进制

=
1
a
?>

0x02 分析

传入的字符串,翻转得到$_o
遍历每个字符
每个字符ord(),得到ASCII,再加1
将得到的数,chr(),编程字符
得到整个字符串
base64加密,反转,rot13加密,得到miwen

//解密脚本

<?php
$str="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$a=base64_decode(strrev(str_rot13($str)));

$b="";	
for($x=0;$x<strlen($a);$x++){
		
	$y=substr($a, $x,1);
	$z=ord($y)-1;
	$d=chr($z);
	$b=$b.$d;
}
echo strrev($b);

//flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}
?>

参考链接:
https://blog.csdn.net/weixin_42499640/article/details/99102049

web2

标签:yum   单个字符   for   位置   base   rev   sub   sdn   加密   

原文地址:https://www.cnblogs.com/observering/p/12849735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!