Passo 3: O Parser do PDO (A Confusão)

Agora, vamos analisar com calma como o PDO interpreta essa query que ele mesmo montou.

O Gatilho da Confusão:
O parser do PDO encontra a crase de abertura (`\) que estava no código original e pensa: "Ok, estou lendo um nome de coluna. Vou ignorar qualquer
?`

que encontrar aqui dentro."

A Quebra:
No entanto, dentro dessas crases, ele encontra o payload do atacante. O null byte (\0) no final age como um terminador inesperado e quebra a leitura do nome da coluna. O parser fica confuso e reavalia o que acabou de ler.

A Reinterpretação:
Nessa reavaliação, ele vê o ? não mais como parte de um nome de coluna, mas como um marcador de parâmetro válido.

A "Cegueira" do Parser:
Imediatamente após, o parser vê o caractere #. Ele o reconhece como o início de um comentário do MySQL e para de analisar a query ali. Por isso, ele ignora completamente a parte " FROM fruit WHERE name = ?", pois acredita que tudo aquilo é um comentário.

O resultado é que o PDO conclui que a consulta tem apenas um marcador (?) para substituir: aquele que o atacante injetou.
 
 
Back to Top