You say:
>g∘f is injective because g(f(a)) = g(f(b)), and f(a) = f(b).
But that doesn't at all mean that g∘f is injective. To know that g∘f is injective is to show that:
>g(f(x)) = g(f(y)) ONLY WHEN x = y.
In fact, you've clearly shown that your example has two distinct elements of X that map to the same elements of Z under g∘f and therefore that g∘f is not injective in your example.
As a hint, the claim is true. It's quite easy to prove by contradiction. Let's assume:
1. g∘f is injective.
2. f is not injective.
So... What's the definition of g∘f being injective (I state it above). What does it mean for f to be injective? If g is well defined and f(a) = f(b), what do we know about g(f(a)) and g(f(b))?