Breaking out of a proxy jail: SSH
SSH is an amazingly useful app/protocol that allows the remote execution of commands on a remote server. Effectively, you have a console as if you were sitting right at the machine. It allows lets you forward ports over TCP, which is why including it. Combined with something like ProxyTunnel or Desproxy it can be used to create a secure tunnel between client and server, or alternatively server and client (it works both ways).
A SSH server is bundled will all good *nix. I've not tried running a server on Windows, so I can't comment on that.
To make a standard terminal connection, use:
To create a TCP tunnel forwarding a local port to a remote host via the server, use:
In the previous example, any connection made to localhost on port 10080 would be forwarded to google.com on port 80.
This is very useful if you forward to a remote SOCKS server (which can be running on the SSH server). Once the SOCKS server is running (use socks), use the following:
It's assumed the SOCKS server will be running on port 1080, because that's the default. 127.0.0.1 is localhost. There is no reason you couldn't connect to a SOCKS server running on a different machine to the SSH server. Once the tunnel has been created, tell your browser/FTP client/IM client to use a local SOCKS server on port 1080. SSH will do the rest.
A reverse tunnel can also be created, using:
In the example above, when a connection is made to the SSH server on port 10080 a connection to google.com on port 80 will be made by the SSH client, not the server. This is useful for getting back into a network, as instead of forwarding to google, you could forward to a SOCKS server (use socks) and make socket connections as if you were inside the network. However, this may not be the best solution, as the client machine needs to have SSH access (which you may not want to give a machine with access by people other than yourself). An alternative is Active Port Forwarding.
There are plenty of resources on SSH, just Google.