Those who look at the last link I posted can see that it has only 1 parameter "crypt" which is encrypted. This is because I went to the payment failure link with a fake VendorTxCode parameter as if it was returned by SagePay.
After studying SagePay's shared scripts, I saw that VendorTxCode parameter is one of the parameters that is not checked against XSS. All websites that use those scripts or have code copy+pasted from those scripts inherited also the vulnerabilities associated with them. These include XSS and SQL injection (the SQLSafe function is not that safe).
And a flaw in SagePay makes it possible to find the password for any given "crypt" string and to fake the payment status (it's funny how they put "simple XOR" and "secure" in the same sentence).
More details about these problems here: [
nemesis.te-home.net].