Not a solution, but perhaps it can help lead to one?
There are a few ways to be 54 points behind both other players. If Bob doesn't have any Curses at all, there aren't many ways to come back from that.
12 provinces = 72 points
12 duchies = 36 points
12 estates = 12 points
There is a total of 120 points. Each opponent could have their starting estates while Bob has trashed his, so that means at the very least they each have 51 of the available points from the supply. In that case, there are at most 18 points remaining in the supply for Bob to gain.
Along with this, there are 30 curses available to pass out. If he passes them all to a single opponent, their lead drops to 24. That means that even if Bob buys all the remaining VP, he will STILL be behind the cursed opponent, and that's without worrying about the other guy. It's an even worse proposition if he passes out curses evenly.
Therefore the solution must involve either destroying their VP or stealing them.
---
Perhaps a solution could involve KC, Bridge and Saboteur, maybe facilitated by Golems in hand. But the problem is that this would be stopped cold by Moat and Lighthouse.
Another idea -- the two opponents don't need the same split of VP. One could have 9 provinces and the other a mix:
12 duchies = 36
2 provinces = 12
3+3 estates = 6
== 54
This would leave in the supply: 1 province, 9 estates, 30 curses.
Perhaps Bob can put his opponents into a Bureaucrat pin, eventually forcing the players to pass VP cards with Masquerade. You will gain much more than the other opponent since the player passing to you is passing Province while the other is passing Estates and Duchies. Maybe you can work some curses in there as well.
But again, this is blocked by Moat and Lighthouse.
I'm really not sure how to do this when attacks are blocked.