The second one was a mobile app that was originally ported from some legacy J2ME app and "gotten to work" on the iPhone platform. It was pretty much a straight port, data structure by data structure, from Java to Objective C, and didn't really use the platform properly at all. For example, each and every control was hand-crafted to mimic the original J2ME app, rather than using the built in UIs that iPhone provided. It got to the point where nobody could touch it without it falling over, and no senior person was willing to work on it anymore. I was senior enough in my career at that point that I could insist that a complete re-write was the only way to go. We did that successfully and the previous pile of technical debt was killed.
Those examples aside, I'd say that almost every place I have worked suffered from technical debt to a large degree. The common theme was a huge legacy code base that suffered for years (decades) from repeated "just cram it in and get it to work" abuse. The metaphor I always like to use is: No home builder on earth would, when their requirements were to build a 5 story apartment building, take a single story single family home and just add 4 floors. But seemingly every company building software attempts to do this.