No haces nada mal, te aparece debajo por que el orden en el html es ese, primero la imagen y después el div del caption, si pones el div encima de la imagen pues te aparecerá antes, si quieres más como por ejemplo que el caption quede superpuesto a la imagen solo te falta por estilos posicionar donde quieres que aparezca exactamente el caption.
Para posicionar el caption yo lo haría con posiciones absolutas relativas a su padre o sea el contenedor.
Deberías añadir esto al .contenedor:
y esto al .caption
Y entonces te funcionara el top y el left que ya le pusiste, ahora juega con esos dos valores de top y left hasta dejar el caption en el lugar que quieras ;)
Un saludo