O UNION anexa à resposta uma linha vinda de qualquer tabela, se as colunas casarem.
O UNION do SQL junta o resultado de dois SELECT numa lista só. Numa injeção, isso deixa o atacante anexar à resposta da página linhas vindas de outra tabela, bem diferente da que a consulta devia ler. A regra é uma: os dois lados do UNION precisam ter o mesmo número de colunas.
Por isso o primeiro passo é contar as colunas. Duas técnicas:
ORDER BY n: ordena pela coluna de número n. Vai funcionando até n passar do total, quando dá erro. O maior n que funciona é o número de colunas.
UNION SELECT NULL, NULL, ...: só funciona com o número exato de colunas; você aumenta os NULL até parar de dar erro.
Sabendo o número (digamos 4) e quais posições a página imprime, você monta -1 UNION SELECT NULL, name, email, NULL FROM employees: o -1 zera o resultado original, e os campos da outra tabela caem nas colunas visíveis.
A consulta original tem quatro colunas e imprime três; o UNION SELECT com quatro colunas anexa uma linha da tabela employees, que aparece no lugar do produto.