As to "backward" SSH there's Reverse Remote Shell that I've been using for a while in a similar situation.
But here, some things should be clarified first:
- What kind of access do you need? Are we talking about SSH only or you meant something else?
- What's about this web server (B)? Can it access the destination (C) directly without problems (which is not possible from A)? Or is it only a problem of unknown/dynamic IP of the source machine (A)?
I presume that in a standard situation you're able to initiate outgoing connections from C without restrictions, and all new inbound traffic is filtered, right?
UPDATE:
In that case you could use Reverse Remote Shell to connect from C (school) to B (SSH account). Then logging in from A (home) to B over SSH you grab the reverse console access to C. Plus side of this is it should work on almost any configuration.
Major drawbacks:
- It's SSH only plus things you can do when you have local access to C.
- You implicitly trust B (that your session won't be stolen).
This is a bit cumbersome. It would be much easier to use SSH port forwarding for this, but that is sometimes blocked by universities/schools (at least from my experience). Please see if you can use it in your situation. Then an easier and more elegant solution should be possible.