Baby Website Rick

Pickle Deserialization with a slight twist

We are presented with a web application that seems to point to some form of pickle deserialization attack from the start.

We can also see that a suspicious looking base64 string is encoded in the cookie, which seems to be a pickle object.

We can first try to decode the existing pickle object with pickle.loads, adding the appropriate anti_pickle_serum object.

We can now craft our payload based on this article , using the __reduce__ attribute to place our malicious code.

After some trial and error, i realized that os.system() doesnt directly return my command output which is why i opted for subprocess.check_output as it captures the standard output of the external command as a string and returns it.

Pickle's Protocol might matter in this case as well as the version of python that you are using as I only got it to work with python2 and protocol 0.

Last updated