Você não está conectado. Conecte-se ou registre-se

[Tutorial] SQL Injection (MySQL)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 [Tutorial] SQL Injection (MySQL) em Sex Fev 12, 2010 4:24 pm

dr olk


Admin
Neste tutorial é feito uma descrição de como utilizar o Sql Injection para obter algumas informações.
Primeiramente: O que é Sql Injection?
É uma das vulnerabilidade mais comuns atualmente. Esta vulnerabilidade permite ao atacante executar consultas ao banco de dados inserindo querys (comandos Sql) na url do site obtendo, assim, informações confidenciais.
1 - Sql Injection (clássico ou baseado em erros).
Medidas adotadas para explorar a vulnerabilidade.
A) Verificar a Vulnerabilidade.
Abaixo um exemplo qualquer para análise da vulnerabilidade. O link fictício mostra uma página qualquer de um site, imaginemos que seja um página de um fórum hacker lixo de invasão. :
[Você precisa estar registrado e conectado para ver este link.]
Para identificarmos se o site é vulnerável, colocaremos ao final da url uma aspa simples ( ' ). Abaixo é mostrado a forma como a url ficará.
[Você precisa estar registrado e conectado para ver este link.]
Caso o site retorne um erro igualmente ou semelhante ao apresentado a seguir. O site é vulnerável a Sql Injection Smile
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the...
O erro acima diz que você possui um erro na síntaxe da consulta Sql e pede para você checar o manual correspondente ao SGBD que você está utilizando. "Até parece que você é o administrador do site" Very Happy
Agora que checamos o erro no site e sabemos que este é vulnerável a injeção de Sql na url. Iremos ao passo seguinte.
B) - Localizar a Quantidade/Número de Colunas/Tabelas do banco de dados.
Para encontrar a quantidade de Colunas/Tabelas é utilizado o comando ORDER BY.
Mas como utilizar este comando Sql?
Simples! Ao final da url você adiciona o comando order by e vai adicionando uma sequência de Colunas/Tabelas, ou seja, você pode acionar a coluna correspondente. Caso queira olhar a coluna 1, ordene assim:
[Você precisa estar registrado e conectado para ver este link.] order by 1
Se não aparecer nenhum erro é por que esta Coluna/Tabela número 1 existe. Lembre-se que esta vulnerabilidade necessitamos trabalhar em cima dos erros, então o ideal é você ir acrescentado valor até que o site retorne um erro dizendo que a Coluna/Tabela é inexistente no banco de dados.
[Você precisa estar registrado e conectado para ver este link.] order by 1/* <-- Sem erro
[Você precisa estar registrado e conectado para ver este link.] order by 4 <-- Com erro
O exemplo acima, é atribuido Colunas/Tabelas (1..2..3..4), no entanto, é mencionado erro na Coluna/Tabela 4. Conclui-se então que esta Coluna/Tabela é inexistente e que o banco possui apenas 3 Colunas/Tabelas.
C) - Utilizando a função UNION.
Esta função poderosa é responsável por unir vários dados localizados em Colunas/Tabelas diferentes. "Que massa hem!" Very Happy
Vamos utilizar o exemplo abaixo para melhor exemplificar.
[Você precisa estar registrado e conectado para ver este link.] union all select 1,2,3
Explicando a Sql:
O exemplo acima vai possibilitar ao "Injectador" visualizar todas as informações contidas nas Colunas/Tabelas 1, 2 e 3 do banco.
Código: Selecionar tudo
...?id ... union all select 1,2,3
Faça a união de todas as informações contidas das Colunas/Tabelas 1, 2 e 3 do site: [Você precisa estar registrado e conectado para ver este link.] Está e a ordem que você atribui ao comando colocado na url do site.
D) - Descobrindo a versão do SGBD (MySql).
[Você precisa estar registrado e conectado para ver este link.] union all select 1,2,3
Observe acima que na url o comando Sql pede para visualizar as três Colunas/Tabelas existentes no banco. Agora para visualizar a versão do banco é necessário que façamos uma substituição. Retirar a Coluna/Tabela 2 pelo comando @@version.
[Você precisa estar registrado e conectado para ver este link.] union all select 1,@@version,3
Caso não der certo, você receberá uma mensagem de erro semelhante a esta:
"union + illegal mix of collations (IMPLICIT + COERCIBLE) ..."
Para resolver este erro necessitamos utilizar a função convert(). Exemplo abaixo:
[Você precisa estar registrado e conectado para ver este link.] union all select 1,convert(@@version using latin1),3/
Ou então as funções hex() e unhex();
[Você precisa estar registrado e conectado para ver este link.] union all select 1,unhex(hex(@@version)),3/
Com os procedimentos acima, você irá conseguir achar a versão do SGBD MySql.

Ver perfil do usuário http://forumyakuza.ativoforum.com

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum