Eric lippert used to say always "Closer is better".
A method first declared in a derived class is closer than a method first declared in a base class.
So from the above link, derived class is closer hence that is chosen.
This behavior is carefully implemented to avoid Brittle base class problem
For completeness I'll share the bullets:
A method first declared in a derived class is closer than a method first declared in a base class.
A method in a nested class is closer than a method in a containing class.
Any method of the receiving type is closer than any extension method.
An extension method found in a class in a nested namespace is closer than an extension method found in a class in an outer namespace.
An extension method found in a class in the current namespace is closer than an extension method found in a class in a namespace mentioned by a using directive.
An extension method found in a class in a namespace mentioned in a using directive where the directive is in a nested namespace is closer than an extension method found in a class in a namespace mentioned in a using directive where the directive is in an outer namespace.