This problem came up on the Oracle Community forums and I thought it was worth noting here too as it's a useful tip...

I've also learned by myself (and by chance) that the best way to "disconnect" from the ngz console after a init 5 is to issue a ^C before ~.
If I don't execute a ^C and simply use ~. I'm disconnected from the console and also from the ssh connection, which is certainly annoying.

The trick here is to use a tilda (~) for every hop you made on your way to the zone's console. So if you're connecting directly from the global zone to the zone's console (zlogin -C), then the disconnect will be ~. (tilda dot). If you're connecting from another host via ssh to the global zone and then only to zone's console, use 2 tildas and one dot, ie ~~. - the first ~ for the ssh hop and the second for the "zlogin -C" hop. If you're connecting as follows: host1host2host3zlogin -C use three tildas and one dot, ie ~~~.

Keep increasing the number of tildas as you wind your way through all your hosts :-)