Match the gadget to the target library version
A deserialization payload that “should work” but fails at the unmarshal step is almost always a serialVersionUID mismatch. The server has one version of the gadget library; your payload was built against another.
bash
# pull the exact version the server ships
unzip -l target.war | grep -i commons-beanutils
# then build your gadget against that exact jar
Older Commons BeanUtils (1.9.4) declares BeanComparator with a serialVersionUID of exactly 1; newer builds do not. Compile against the version the target actually bundles and the object reconstructs cleanly.