Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Filipe_Moraes

SQL Injection

Recommended Posts

Olá pessoal.

Eu tenho um script que pega um parâmetro via GET, por exemplo:

 

http://www.meusite.com/?lg=1

 

No meu script php não estou a tratar esse parâmetro (por distração), faço diretamente uma consulta na base de dados usando o que passei por GET.

 

Acontece que ao passar por um auditoria, conseguiram utilizar essa brecha para ter acesso a base de dados.

 

Como conseguiram chegar a base de dados?

Apenas consegui provocar um erro trocando o 1 pelo apóstrofo.

Se tento colocar uma query (para tentar obter o nome da base de dados e utilizador, ou listagem das tabelas) no lugar do 1 retorna um Forbidden.

 

Como conseguiram extrair dados da base de dados através da única lacuna que encontraram?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta pesquisar como realizar ataques via SQL Injection.

 

WikiPédia:

 

A injeção de SQL ocorre quando o atacante consegue inserir uma série de instruções SQL dentro de uma consulta (query) através da manipulação das entradas de dados de uma aplicação.

 

Nada mais é do que colocar instruções SQL na URL mesmo.

Existem diversos tutoriais na internet para fazer isso, não vou postar nenhum link externo porque não sei se esta dentro das regras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você não tiver um filtro é possível inserir comandos sql direto pelo formulário, isso da ao atacante um poder enorme sobre o sistema.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo uma das formas de evitar que o usuário ataque o sistema e tratar todos dados recebidos, pois se ele identificar mais ou menos como funciona seu sistema ele pode fazer uma consulta e listar tudo. eu trato com

 

strip_tags();

 

existem outras que eu uso também consulte o manual do php, obterás boas informações sobre o assunto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, eu agradeço muito o vosso tempo mas não respoderam a minha pergunta.

Eu sei como tratar, seja filtrando o tipo de dado, usando prepared statements, limitando o tamanho do parâmetro, usando addslashes, replace, etc... :yes:

A questão era, o pessoal da auditoria conseguiu ter acesso a base de dados através dessa lacuna, eu tentei chegar lá introduzindo SQL no parâmetro, porém dá um forbidden.

Veja o que eu escrevi:

 

 

Acontece que ao passar por um auditoria, conseguiram utilizar essa brecha para ter acesso a base de dados.

 

Como conseguiram chegar a base de dados?

Apenas consegui provocar um erro trocando o "1" pelo apóstrofo.

Se tento colocar uma query (para tentar obter o nome da base de dados e utilizador, ou listagem das tabelas) no lugar do "1" retorna um Forbidden.

 

Agradeço a vossa ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usei o apóstrofo normal, sem codificação e funciona, mas apenas retorna um erro.

Troquei o apóstrofo por uma query porém retorna um forbidden.

 

Para chegar a base de dados teria que conseguir executar a query que passo no lugar do parâmetro.

Se retorna um forbidden, como conseguiram chegar a base de dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.