Nothing stops you from passing a VPN through a TCP connection on port 80 and 443. There are few protocols people haven't tunnelled IP over (DNS included...)
To bypass this, I wrote a simple ruby script to tunnel TCP connections, while adding fake HTTP headers to get through the firewall.
https://www.torproject.org/projects/obfsproxy.html.en
https://gitweb.torproject.org/pluggable-transports/obfsproxy...