你没有见过的加密

寵の児 提交于 2020-01-09 02:03:36
 # 你没有见过的加密!

## 题目描述
```
MDEzMjE5MDAyMTg0MTUzMjQwMTQ0MDc3MjUzMDk2MTc1MTUzMTE4MTg4MDEwMDA2MTg4MDA0MjM4MDI1MTA3MTU4MTc5MTM4
MjUyMTUxMDQzMDI3MDQwMTg3MTc2MTQ3MTU2MTMyMDQzMDI5MDM3MjE0MDg4MTExMDE1MDU4MjM3MjE3MTIyMDQxMjM2MTQz
请喜欢linux的你,自己动手写出解密代码吧
格式:flag{ }
解题链接: test.rar
```

## 解题思路
打开附件,看到加密算法,直接写解密算法,这里有一个坑,不同版本,不同操作系统的php对`srand`种子后的随机值生成序列不一样,这也导致了很多人解不出来flag。
我也找了用了几个虚机测了几个版本都出不来,急中生智,找了个在线的php运行工具,找到了对应版本5.3,版本号是从访问题目附件的返回包里找的。

```php
<?php
    function decrypt($str)
    {
        srand(3284724);
        if(preg_match('%^[a-zA-Z0-9/+]*={0,2}$%',$str))
        {
            $str = base64_decode($str);
            if ($str != "" && $str != null && $str != false)
            {
                $decStr = "";
                for ($i=0; $i < strlen($str); $i+=3)
                {
                    $array[$i/3] = substr($str,$i,3);
                }
                foreach($array as $s)
                {
                    $tmp = rand(0, 255);
                    $a = intval($s) ^ $tmp ;
                    $decStr .= chr($a);
                }
                return $decStr;
            }
            return false;
        }
        return false;
    }
    echo decrypt("MDEzMjE5MDAyMTg0MTUzMjQwMTQ0MDc3MjUzMDk2MTc1MTUzMTE4MTg4MDEwMDA2MTg4MDA0MjM4MDI1MTA3MTU4MTc5MTM4");   
?>
```
在线运行网站`http://www.dooccn.com/php/`。 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!