One way to proceed might be to start with a matrix you know will be of rank 3:
$\begin{bmatrix}\ast&\ast&\ast&\ast\\ \ast&\ast&\ast&\ast\\ \ast&\ast&\ast&\ast\\0&0&0&0 \end{bmatrix}$
Of course, if we row-reduce this matrix, we can bring it into upper-triangular form without changing its rank, so we may as well start with:
$\begin{bmatrix}\ast&\ast&\ast&\ast\\ 0&\ast&\ast&\ast\\ 0&0&\ast&\ast\\0&0&0&0 \end{bmatrix}$
Now we know that the image of any vector will be of the form (x,y,z,0), so we would like to fill in the third row so that we wind up with a vector of the form (u,v,0,0).
That is, we want to choose a and b such that:
$\begin{bmatrix}\ast&\ast&\ast&\ast\\ 0&\ast&\ast&\ast\\ 0&0&a&b\\0&0&0&0 \end{bmatrix} \begin{bmatrix}x\\y\\z\\0 \end{bmatrix} = \begin{bmatrix}\ast\\ \ast\\0\\0 \end{bmatrix}$
Clearly, if we choose a = 0, any value will work for b, and if we pick b non-zero, we can perform the row-operation of multiplying the third row by 1/b without affecting the rank, so we may as well choose b = 1.
Next, we want to pick a,b,c such that:
$\begin{bmatrix}\ast&\ast&\ast&\ast\\ 0&a&b&c\\ 0&0&0&1\\0&0&0&0 \end{bmatrix} \begin{bmatrix}u\\v\\0\\0 \end{bmatrix} = \begin{bmatrix}\ast\\ 0\\0\\0 \end{bmatrix}$
Again, setting a = 0 will do the trick, and if we pick any non-zero value for b, we can multiply the 2nd row by 1/b, giving us:
$\begin{bmatrix}\ast&\ast&\ast&\ast\\ 0&0&1&d\\ 0&0&0&1\\0&0&0&0 \end{bmatrix}$
Clearly subtracting d times the third row from the second row does not change the rank. I hope you can see now where this is going...Of course, we wind up with the self-same matrix Fernando Revilla displayed, which shouldn't be surprising...the point is, we didn't "luckily guess" it, we DEDUCED it.