La clave está en el AGRUPAMIENTO POR/TENIENDO utilizando un CONTEO de nombres de teléfono DISTINTOS. Cuando el recuento sea 2, sabrá que el usuario tiene ambos teléfonos.
SELECT m5.name
FROM mark5 m5
INNER JOIN mark4 m4
ON m5.uid = m4.uid
INNER JOIN mark3 m3
ON m4.phoneid = m3.phoneid
WHERE m3.name in ('HTC', 'Samsung')
GROUP BY m5.name
HAVING COUNT(DISTINCT m3.name) = 2;