1
resposta

[Dúvida] ERROR: laboratório da PortSwigger nomeado “SQL injection UNION attack, retrieving data from other tables”.

Ao tentar exeplorar a vulnerabilidade utilizando o UNION, da forma descrita no tutorial, me deparei com o erro de internal server.

Estava utilizando da seguinte forma: Pets' UNION SELECT * FROM users --

Fiz todas as analises possiveis, validando cada erro e observei, que aparentemente, a tabela user, contempla mais de duas colunas e sendo assim, tive que certificar que o retorno seria de duas colunas, mudei a query para o seguinte formato.

Pets' UNION SELECT username, password FROM users --

Apos utilizar da forma acima, rodou tranquilamente.

Agora fiquei com duvida, como eu consigo saber a quantidade de retorno que estou obtendo na consulta? Tentei implementar um show tables na consulta, mas a arquitetura não permite. Tem alguma outra forma de explorar a base de dados?

1 resposta

Olá, Alijackson. Tudo bem?

Muito bom você conseguir ajustar a consulta para que ela funcionasse corretamente! No caso de ataques de SQL Injection, especialmente quando se utiliza o operador UNION, é essencial que o número de colunas na consulta original e na consulta injetada seja o mesmo. Para descobrir o número de colunas que a consulta original retorna, você pode usar algumas técnicas.

Uma abordagem, é usar a cláusula ORDER BY para determinar o número de colunas. Você pode fazer isso incrementando o número até que ocorra um erro. Por exemplo:

Pets' ORDER BY 1 -- 
Pets' ORDER BY 2 -- 
Pets' ORDER BY 3 -- 

Continue aumentando o número até que você receba um erro, indicando que você excedeu o número de colunas. O último número que não gerou erro é o número de colunas na consulta original.

Outra técnica é usar o UNION SELECT NULL repetidamente, adicionando mais NULLs até que a consulta funcione sem erros:

Pets' UNION SELECT NULL -- 
Pets' UNION SELECT NULL, NULL -- 
Pets' UNION SELECT NULL, NULL, NULL -- 

Continue adicionando NULLs até que a consulta seja bem-sucedida. O número de NULLs que funciona é o número de colunas.

Essas técnicas são úteis para explorar a estrutura do banco de dados sem precisar de permissões adicionais para comandos como SHOW TABLES.

Espero ter ajudado e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!