[MRCTF2020]Ezaudit
首先我们进行目录扫描,发现www.zip
可以下载到源码
1 | <?php |
通过审计代码,我们发现关键点一步是求出私钥,由于生成公钥使用的是mt_seed,即伪随机函数,我们只要通过公钥获取到种子值就能得到私钥
我们使用php_mt_seed这个脚本
我们先处理公钥数据成脚本需要的数据格式
首先我们进行目录扫描,发现www.zip
可以下载到源码
1 | <?php |
通过审计代码,我们发现关键点一步是求出私钥,由于生成公钥使用的是mt_seed,即伪随机函数,我们只要通过公钥获取到种子值就能得到私钥
我们使用php_mt_seed这个脚本
我们先处理公钥数据成脚本需要的数据格式
我们进行代码审计
1 | <?php |
代码对comm1和comm2进行正则匹配,再执行命令
我们需要做的就是绕过正则匹配和执行想要的命令
打开页面,进行代码审计
1 | <?php |
我们要了解什么是require_once
require_once
表达式和 require 表达式完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。
由于 require_once 包含的软链接层数较多时 once 的 hash 匹配会直接失效造成重复包含。
打开页面,提示我们计算1000次答案给flag
我们直接上脚本
1 |
|
得到flag.