
Dafydd/Coalesence
In Terms of PCI the reason for having HTTPS is to ensure that the details are encrypted in transit from the client to the server and to ensure that the server is who it says it is. This would stop packet capturing, man in the middle attacks, redirecting frames, etc ** which could be used to capture individual payment card details. As Coalesence says it doesn't make the site secure, but at least it's better than having the data transferred in clear text.
The statement "customer credit card data is encrypted on our website" doesn't make much sense. If Cotton traders followed PCI DSS (req 1.3) the info should be stored in a Database not in the same DMZ as the webservers themselves. However even if the database is encrypted it doesn't necessarily make it more secure as most people just encrypt the database rather than the data inside it. This means that an app can still read the data in clear as long as it can access the database correctly.
My guess is that either a) the database server was accessible from the internet or b) it was subject to SQL injection which meant it was a simple a case of creating a Select statement that dumped all the customer info.
b) is the most likely and I've demo'd that before to people who claimed to have secure sites.
** Of course if people ignore the warning about incorrect/invalid certificates these attacks would still work.