前言
10月赛的时候去打那个瓜皮的领航杯(体验极差),还是回来复现安恒的题目比较好,质量还是有保证的,学到很多东西
正文
easy audit
这个题目确实有点脑洞。。运用了两个php函数一个是get_defined_functions
这个函数是用于返回所有已定义函数的数组,而另外一个则是get_defined_vars
这个函数是返回由所有已定义变量所组成的数组
可以查看此网址:https://www.jb51.net/article/42890.htm
右键查看源代码发现存在index.php?func1
,那么这个参数究竟有什么作用可以先尝试一下,上手就来一个phpinfo,发现直接有回显
猜测是直接运行函数之类的功能,然后运用get_defined_functions
获得全局的函数这里面的函数有内置的也有开发人员自己定义的函数,可以发现最后的这一个函数特别显眼,调用一下这个函数发现有源码出来
<?php
//include 'real_flag.php';
function jam_source_ctf_flag(){
echo file_get_contents('flag.php');
}
class jam_flag{
public $a;
function __construct(){
$this->a = isset($_GET['a'])?$_GET['a']:'123';
}
function gen_str($m=6){
$str = '';
$str_list = 'abcdefghijklmnopqrstuvwxyz';
for($i=0;$i<$m;$i++){
$str .= $str_list[rand(0,strlen($str_list)-1)];
}
return $str;
}
function GiveYouTheFlag(){
include 'real_flag.php';
$secret = $this->gen_str();
//echo $secret;
if($secret === $this->a){
echo $real_flag;//echo $flag
}
}
function __invoke()