MD5 is a hash, so it is a one-way cryptographic function. But I am not sure that MD5 has only one hash per input?
Web application stores the passwords hashed with MD5, but when the user enters the password how can the application give access to that user? As the users password will be a hash with another string which is different from the older one.
And how do MD5 dictionaries work? We can get the reverse of the input, but how does it actually work?