A man in middle can decrypt the certificate(public key for decryption is available on everywhere) and steal the public key for the session. Now the middle man can read all encrypted messages from web server to client. But cannot read messages from client to server. So how does HTTPS avoid this?
You're quite simply misunderstanding how asymmetric cryptography works:
The public key in the certificate will NOT let you decrypt anything, it's not what it's for.